【发布时间】:2019-06-16 08:30:51
【问题描述】:
在我的大学里,我们正在学习编写 RMI 应用程序。当我第一次尝试在 Eclipse 2019-03 中运行示例应用程序时,我遇到了错误: java.lang.UnsupportedClassVersionError 我成功地运行了其他项目(非 RMI),没有任何问题。
当我跑步时
java -version
我明白了:
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu218.04.1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu218.04.1, mixed mode, sharing)
和
javac -version
我明白了:
javac 11.0.3
我在运行 Ubuntu 18.04 的系统上安装了 Java 8 和 11。 在寻找问题的解决方案时,我发现了这个问题: How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version
将 Eclipse 中的编译器兼容级别的设置更改为 1.8 并更改项目特定的设置对我有帮助,我最终能够在没有任何错误的情况下运行应用程序。不过这个解决方案并不能让我满意。
当我跑步时
update-alternatives --config java
和
update-alternatives --config javac
在这两种情况下都选择了 openjdk11。 我不明白,如果我不更改编译器设置,为什么会出现错误。
其中一个答案表明它是错误设置的 $JAVA_HOME 变量。当我跑步时:
jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
它确实给了我答案
/usr/lib/jvm/java-8-openjdk-amd64/jre
我尝试按照本指南将其更改为 openjdk11: https://askubuntu.com/questions/175514/how-to-set-java-home-for-java 当我现在跑步时
echo $JAVA_HOME
我明白了:
/usr/lib/jvm/java-11-openjdk-amd64
但是当我运行时
jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
答案还是一样。
我希望能够使用我的 openjdk 11 来编译和运行代码,而无需更改 Eclipse 中的编译器设置。有人有同样的问题并给我提示吗? 提前谢谢!
完整的错误如下:
java.lang.UnsupportedClassVersionError: chapter6/Counter has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
【问题讨论】:
-
Eclipse 有一个内部设置来确定使用哪个 JRE/JDK。检查它是在 JRE 11 还是 8 上。
标签: java eclipse rmi ubuntu-18.04 openjdk-11