【问题标题】:Use JDK6 to dynamic compile src but after switching to JDK environment still get a null from ToolProvider.getSystemJavaCompiler();使用JDK6动态编译src但切换到JDK环境后仍然从ToolProvider.getSystemJavaCompiler()得到null;
【发布时间】:2011-05-06 06:09:41
【问题描述】:

我正在使用JDK6从UI编译输入src并立即运行。

但问题是我的应用默认使用的是 jre 而不是 jdk,所以:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

总是返回空值;

而且我注意到在每台服务器上也安装了JDK6,所以我写这个是为了解决这个问题:

System.setProperty("java.home", "\opt\jdk-i386-60");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// Dynamic compile and run app

但是没用,可能java环境不会马上变到我刚才设置的那个地方,还是得到了null对象。

那么,我的问题是如何将 jre 环境切换到 jdk 并使其立即生效,以便我们可以获取 JavaCompiler 对象?

谢谢。

【问题讨论】:

    标签: java dynamic-compilation


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-01
      • 2018-02-16
      • 2018-01-18
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多