问题描述
@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.8
或11
。
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)。