java - 使用 java -jar 命令时,Java 似乎已过时
问题描述
我最近一直在我的 Windows 计算机上编写一些 Java 程序。我一直在尝试使用java -jar
运行已编译的 jar 来更清楚地查看错误,但是当我尝试这样做时,出现以下错误:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/company/app/GUI 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
这显然意味着我的 java 版本已经过时了。但是,当我查看 Java Updater 时,它显示我正在运行最新版本。运行java -version
显示:
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) Client VM (build 25.261-b12, mixed mode)
那么为什么命令提示符使用旧版本,我该如何更改呢?谢谢您的帮助。
解决方案
此错误清楚地表明您尝试.jar
在设置中提供的 JRE/JDK 8(主要版本 52)上运行使用 JDK 13(主要版本 57)构建的文件PATH
,因此在运行java -jar
/java -version
命令时会调用该文件。
如果您的机器上安装了 JDK 13,则需要检查环境变量PATH
和/或JAVA_HOME
:
C:\Users\hp1>echo %JAVA_HOME%
C:\Java\jdk-13.0.2
C:\Users\hp1>echo %PATH%
C:\Windows\system32;C:\Java\jdk-13.0.2\bin
C:\Users\hp1>java -version
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
如果PATH
引用 JRE/JDK 8,您可以创建另一个变量并更新PATH
(复制非 java 路径):
>set JAVA_13=**path_to_your_jdk_13**
>set PATH=C:\Windows\system32;%JAVA_13%\bin
如果您的计算机上没有 JDK 13,要解决此问题,您应该重建.jar
文件以使其与 JDK 8 兼容,前提是代码未使用较新版本的任何功能。
推荐阅读
- c# - 从 MySQL 调用 C# 函数
- kivy - Kivy - 在第一次和第二次单击时更改按钮图像
- javascript - 嵌套对象的一部分到平面对象
- apache-spark - 以 StructType 格式获取 Parquet 文件的架构
- java - 使用 MPXJ 在 Python 中将 MPP 文件转换为 MS XML 格式
- javascript - Playwright.js 元素未找到错误处理
- javascript - 为什么我不能为反应钩子分配输入值?
- java - Eclipse IDE Java 编译问题
- azure - 将 Azure 中的应用程序与不同租户中的 Azure AD 连接
- python - 在实时 tkinter 中更新 matplotlib 的问题