Tag: java compiler api

使用Java编译器API时的空指针exception

MyClass.java: package test; public class MyClass { public void myMethod(){ System.out.println("My Method Called"); } } 列表编译MyClass.java文件的SimpleCompileTest.java。 SimpleCompileTest.java: package test; import javax.tools.*; public class SimpleCompileTest { public static void main(String[] args) { String fileToCompile = "test" + java.io.File.separator +"MyClass.java"; JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); int compilationResult = compiler.run(null, null, null, fileToCompile); if(compilationResult == 0){ System.out.println("Compilation is successful"); […]

当我使用javax.tools.JavaCompiler编译源代码时如何设置classpath?

我使用类javax.tools.JavaCompiler (jdk6)编译源文件,但源文件依赖于某个jar文件。 如何设置javax.tools.JavaCompiler的类path?

用javax.tools.JavaCompiler在内存中完全编译代码

我正在使用javax.tools包(JDK 1.7)中的JavaCompiler来编译一些东西,如下所示: compiler.run(null, null, "-cp", paths, "path/to/my/file.java"); 它的工作原理,但我想这样做在内存中(例如传递一个string的代码,而不是源文件,并获取字节码不是.class文件)。 我发现扩展InputStream和OutputStream参数是没用的,因为它可能和控制台中的一样。 你知道一种方法来使运行方法像这样工作吗? 或者你知道用getTask()方法做到这一点的确认方式? (扩展FileManager看起来很容易,但并不那么容易:)