【问题标题】:java.lang.UnsupportedClassVersionError: how to run code with a newer version of Java Runtime [duplicate]java.lang.UnsupportedClassVersionError:如何使用较新版本的 Java 运行时运行代码 [重复]
【发布时间】:2023-03-15 20:35:02
【问题描述】:

从命令行编译时出现错误,如何获取所需的Java Runtime版本?

java.lang.UnsupportedClassVersionError: hello 已被编译 Java 运行时的更新版本(类文件版本 57.0), 此版本的 Java 运行时仅识别类文件版本 高达 52.0

C:\Users\s\Documents\Documents>javac hello.java

C:\Users\s\Documents\Documents>java hello
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: hello has been compiled by a more recent version of the Java Runtime (class file version 57.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(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

【问题讨论】:

  • 你安装了哪个版本的Java?
  • @NoahBroyles java 版本“1.8.0_231”
  • javac 版本 13.0.1
  • @SwetaJain 确保您使用与 JRE 相同的 JDK 版本。

标签: java javac .class-file


【解决方案1】:

看起来您使用的 JRE 与 Java 编译器不同。

java -version

javac -version 

您应该会看到版本不同。

确认后,您可以修复导致差异的路径问题或使用 javac 设置编译目标

javac -target 1.8 hello.java

举个例子

【讨论】:

  • 它没有显示 java 版本
  • @SwetaJain 谁不是?如果 Mike 给您的前两个命令不起作用,请尝试使用 -version 而不是 --version(后者是在 java9 iirc 中引入的)。如果这仍然不起作用,请下载一个实际的 Java 运行时,因为您使用的可能是垃圾。
  • @SwetaJain 用java -version 代替 --
  • 什么意思?
  • 检查这些版本是否匹配或至少匹配javac -version java -version
猜你喜欢
  • 2022-11-13
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多