JDK 11为JAVA_HOME?

问题描述

@H_404_0@在Eclipse 2020-06下运行Codename One应用程序时,JAVA_HOME环境变量能否引用JDK 11(例如jdk-11.0.8)?

@H_404_0@还是需要指向JDK 8(例如jdk-1.8.0_241)?

@H_404_0@当JDK 11设置为JAVA_HOME时,尝试在Eclipse 2020-06下运行Hello World应用程序时出现以下错误

string JSONObject1 = "
{
prop1: val1
prop2: {
          prop3: val3
          prop4: val4
       }
}
"

string JSONObject2 = "
{
prop1: val1
prop2: [{
          prop3: val3
          prop4: val4
       }]
}
"

class MyObject
{
    string prop1 {get; set;}
    MyInnerObject prop2 {get; set;}
}

class MyInnerObject
{
    string prop3;
    string prop4;
}


JsonConvert.DeserializeObject<MyObject>(JSONObject1) // This works
JsonConvert.DeserializeObject<MyObject>(JSONObject2) // This does not work
@H_404_0@我很肯定JAVA_HOME指向JDK 11(因为我可以从命令行回显它)。

@H_404_0@但是我认为我收到了此错误,因为在JDK 9及更高版本中删除了tool.jar,而com.sun.tools.javac.Main曾经位于tools.jar下?

解决方法

you can use JDK 11,但是您的问题似乎是JAVA_HOME设置为JRE而不是JDK。

选中this answer。仅JRE不能编译Java代码。

Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre1.8.0_241"

找到JDK 11目录所在的位置,并将JAVA_HOME环境变量设置为该路径。

但是,我建议您在Eclipse配置选项卡中设置Java。您会在“ Windows菜单-> Java->已安装的JRE”中找到它。

更新1

似乎代号One使用JAVA_HOME,它是在build.xml中设置的。因此,请忘记我现在所说的有关Eclipse变量的内容。

<property name="javaHome" value="${env.JAVA_HOME}"/>

确保将环境变量JAVA_HOME设置为JDK11。有关如何设置here的信息,请参见dos。

更新2

此外,您需要将source="1.5"文件中的每个target="1.5"build.xml更新为1.811

eclipse.ini中的更改示例:

-vm
C:/Users/evand/Downloads/openjdk-11.0.2_windows-x64_bin/jdk-11.0.2/bin/javaw.exe
,

您的JAVA_HOME引用了JRE,而JRE 包含javac Java编译器。

您需要将JAVA_HOME环境变量指向JDK,即Java二进制文件的根目录。

如果您在 echo JAVA_HOME时控制台打印了JDK 11的地址,则可能是您的IDE配置为在使用该IDE时使用JRE目录覆盖该变量。 / p>

或者,您的IDE可以使用其捆绑的JRE,并且您的系统可能正在引用其他Java二进制文件(在您的情况下为JDK)。