从Java程序中编译java文件?(Compile .java file from within a

2019-09-16 13:36发布

我发现这个代码:

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几台电脑。 考虑到这一点,有没有解决有关此问题?

我也想它如果可能的话在跨平台工作。

Answer 1:

有没有解决办法的事实,即JRE不包含编译器和JDK一样。 如果你想使用Java编译器,那么你就需要运行与JDK程序。

还有其他的方法但是在运行时创建可执行Java代码; 有各种各样的字节码汇编 ,让你动态地建立自己的代码,而使用编译器。 ASM是一个岩石坚硬; 在Apache的BCEL是另一回事。



文章来源: Compile .java file from within a java program?