2012-06-04 24 views
12

Estoy creando una herramienta que escribirá archivos .java, y luego (con suerte) compilará esos archivos en archivos .class. Todo en un proceso, el usuario selecciona un directorio de archivos donde se escriben múltiples archivos .java. Ahora quiero que el programa compile estos archivos Java.Compilación de archivos .java externos desde Java

Respuesta

14

JavaCompiler es tu amigo. Consulte la documentación here

Y aquí un ejemplo de cómo se puede utilizar la API de compilador

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>(); 
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); 
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList("YouFileToCompile.java")); 
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null, 
     null, compilationUnits); 
boolean success = task.call(); 
fileManager.close(); 
+0

yo probamos este, y sustituyó a la "YouFileToCompile.java" con una ruta absoluta ahora consigo una NullPointerException en: StandardJavaFileManager administrador de archivos = compiler.getStandardFileManager (diagnóstico, null, null); (problema?) –

+0

Parece que la variable 'compiler' es' null'. Asegúrate de tener una instalación correcta de Java. Mira esto para ayuda http://www.java.net/node/688208 – GETah

+0

Tiene que ser un archivo .java? Si tengo un código en un archivo .txt, ¿seguirá funcionando? – JD9999

4

El JavaCompiler será null si el código se ejecuta desde un JRE. Necesita un JDK, que incluye el tools.jar.