我正在使用JDK6从UI编译输入src并立即运行。
但问题是默认情况下我的应用程序使用的是jre而不是jdk,所以:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
始终返回null;
我注意到每台服务器上都安装了JDK6,所以我写这篇文章是为了解决这个问题:
System.setProperty("java.home", "\opt\jdk-i386-60");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// Dynamic compile and run app
但它没有用,也许java环境不会改变到我刚刚设置的那个地方,它仍然得到了null对象。
所以,我的问题是如何将你的jre环境切换到jdk并立即生效,以便我们可以获得JavaCompiler对象?
感谢。
答案 0 :(得分:1)
不要试图设置java.home
!通过命令行开关设置它通常会导致很多麻烦(找不到库,......)。通过setProperty()
进行设置通常没有任何影响。
相反,如果您想使用特定的Java安装来执行您的应用程序,只需使用其java
可执行文件来启动您的应用程序:
/opt/jdk-i386-60/bin/java -jar myApp.jar