使用JDK6动态编译src但在切换到JDK环境后仍然从ToolProvider.getSystemJavaCompiler()获取null;

时间:2011-05-06 06:09:41

标签: java dynamic-compilation

我正在使用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对象?

感谢。

1 个答案:

答案 0 :(得分:1)

不要试图设置java.home!通过命令行开关设置它通常会导致很多麻烦(找不到库,......)。通过setProperty()进行设置通常没有任何影响。

相反,如果您想使用特定的Java安装来执行您的应用程序,只需使用其java可执行文件来启动您的应用程序:

/opt/jdk-i386-60/bin/java -jar myApp.jar