自从昨天更新(是的,Linux 更新)以来,eclipse 甚至拒绝我运行最简单的 helloworld:
has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
完整错误文本:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: gitplayground/HelloWorld has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
我尝试更新 JRE(和 JDK):
- 窗口 -> 首选项 -> java -> 已安装的 JRE。我可以检查:(
java-8-openjdk-amd64
当前)或java-11-openjdk-amd64
。 - 窗口 -> 首选项 -> java -> 编译器。编译器合规级别设置为 1.8(它不认识 java 11。但它认识 java 9。)
- 窗口 -> 首选项 -> java -> 已安装的 JRE -> 执行环境。单击
JavaSE-1.8
左侧列表中的 时,右侧列表中会出现 2 个选项:java-8-openjdk-amd64
和java-1.8-openjdk-amd64
。第一个被选中。(但我认为这并不重要,因为这些应该是相同的。) - 我尝试更新 eclipse。 (无可用更新)
那么一切都设置为Java8。为什么仍然出现错误?
顺便说一句,我的一些项目(包括 helloworld)标有红色感叹号,但该错误会出现在任何项目中,而不仅仅是这些项目中。
- 我现在使用 XUbuntu 18.04(更新之前一切正常)
- 我使用 eclipse Photon
- 我只使用 Java 标准 API
- 我使用 git 和 eclipse git 插件
答案1
我之前下载 JDK 11 并尝试使用 java 11 时遇到过同样的问题,我也尝试了其他注释,但没有成功。但是,转到Window
->installed JREs
并安装最新版本的 jdk 解决了我的问题。
我的猜测是,需要卸载较新版本的 Java,以便可以使用较早版本的 Java,正如我从这里读到的那样如何找出 Eclipse 正在使用的 JDK 版本?,结合两个答案似乎是:
实际上 Eclipse 有自己的编译器。你可以只使用 JRE 和 Eclipse 来开发 Java 应用程序
您仍然可以检查/设置要编译到哪个 JDK 版本。如果您转到窗口->首选项,然后从左侧菜单中单击“Java”,然后单击“编译器”。第一个设置允许您查看正在编译哪个 JDK 版本。我知道这不能直接回答您的问题,因为 JDK 实际上并没有编译它,但希望它能有所帮助!
我刚刚找到了另一种可以解决问题的方法。
以下是添加兼容性的地方:
在这里添加jdk:
问题解决了。
答案2
尽管这个问题已经很老了,但请转到项目的属性,然后转到 Java 编译器->配置工作区设置...
您应该基本上确认编译器兼容级别和所使用的 jdk 是相同的。
进行此更改后,您应该不会收到错误。