等于JDK,但仍然是;已由Java运行时的最新版本编译;

等于JDK,但仍然是;已由Java运行时的最新版本编译;,java,java-8,Java,Java 8,我使用jdk1.8.0_221进行编译(在IntelliJ中)。 我的服务器上有javac1.8.0191 你知道我为什么仍然收到这样的错误吗: Exception in thread "main" java.lang.UnsupportedClassVersionError: pp/PP has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version

我使用
jdk1.8.0_221
进行编译(在IntelliJ中)。 我的服务器上有
javac1.8.0191

你知道我为什么仍然收到这样的错误吗:

Exception in thread "main" java.lang.UnsupportedClassVersionError: pp/PP 
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
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:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at pp.WebServer$.main(WebServer.scala:16)
at pp.WebServer.main(WebServer.scala)
p.S.工作解决方案与Java版本无关。见下文


注1:对于那些将问题标记为重复问题的人。其他问题涉及Java版本不同的情况。在我的例子中,当版本相等时,我得到了一个错误,并用jdk解决了它。完全不同的情况。您应该更加注意。

要解决IntelliJ中的此类问题,请执行以下操作: 文件->项目结构->项目设置->模块

在最底层的“依赖项存储格式”中,选择->Eclipse(.classpath)->应用


错误消失。

您究竟是如何编译的
pp/pp
?您是否安装过Java11?因为您的错误表明您有。Java 8编译器不会生成55.0版本的类文件。另一方面,最好依靠Maven或Gradle之类的构建工具进行编译。依赖IDE并不是一个好主意,因为它会使生成可复制的版本变得更加困难。实际上,获得此错误的唯一方法是在Java 8运行时尝试使用使用JDK 11编译的类。你说你已经“检查并再次检查”,你确信这不是一个编译器案例——但我恐怕你错了。编译器和Java运行时不会说谎。这是用于开发目的的sdk,它不会做任何事情来修复编译方式(如果使用IntelliJ构建而不是构建系统),甚至不会影响输出代码。您需要在几个位置进行设置,但主要是设置项目字节码目标和项目语言级别