从java程序中编译.java文件?

时间:2012-04-15 00:03:08

标签: java compilation runtime nullpointerexception

我找到了这段代码:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

if(compiler.run(null, null, null, fileName) != 0) {
    System.err.println("Could not compile.");
    System.exit(0);
}

但是,这会返回NullPointerException

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at net.foxycorndog.foxy.compiler.Compiler.compile(Compiler.java:25)
at net.foxycorndog.foxy.compiler.Parser.parse(Parser.java:41)
at net.foxycorndog.foxy.Foxy$ActionHandler.actionPerformed(Foxy.java:99)

我读到JRE不包含在java程序中编译的能力,但是JDK没有。

我不希望程序仅适用于必须手动设置JDK库而不是JRE的路径的少数计算机。考虑到这一点,有没有解决这个问题的工作?

如果可能的话,我也希望它可以在跨平台上工作。

1 个答案:

答案 0 :(得分:4)

JRE不包含编译器,而JDK也没有解决方法。如果要使用Java编译器,则需要使用JDK运行程序。

但是,还有其他方法可以在运行时创建可执行的Java代码;有各种字节码汇编程序,可让您动态构建代码而无需使用编译器。 ASM是一个坚硬的人; Apache BCEL是另一个。