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

从java程序中编译.java文件?,java,compilation,runtime,nullpointerexception,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-Even

我发现这个代码:

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的计算机上运行的程序。考虑到这一点,有没有解决这个问题的办法


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

对于JRE不包含编译器这一事实,没有解决办法,而JDK包含编译器。如果要使用Java编译器,则需要使用JDK运行程序


然而,在运行时还有其他方法来创建可执行的Java代码;有各种字节码汇编器,可以让您在不使用编译器的情况下动态构建代码。岩石坚硬;这是另一个问题。

对于JRE不包含编译器这一事实,没有解决办法,而JDK包含编译器。如果要使用Java编译器,则需要使用JDK运行程序

然而,在运行时还有其他方法来创建可执行的Java代码;有各种字节码汇编器,可以让您在不使用编译器的情况下动态构建代码。岩石坚硬;问题是另一个