Java程序运行报UnsupportedClassVersionError问题求助
解决方案
1. 修复终端的JDK环境变量
核心问题是终端运行用的是JDK8,而编译代码用的是JDK19,版本不匹配;同时JDK19的javac未加入系统路径,导致终端找不到该命令。
- 先找到你的OpenJDK19安装目录,比如Windows下的
C:\Program Files\OpenJDK\jdk-19.0.2,Linux/macOS下的/usr/lib/jvm/java-19-openjdk-amd64 - Windows操作:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 系统变量区域:
- 新建
JAVA_HOME,值填JDK19的安装路径 - 编辑
Path变量,新增%JAVA_HOME%\bin,并把这条移到最顶部(避免优先加载旧JDK)
- 新建
- 关闭所有终端窗口重新打开,执行
java -version和javac -version,确认显示的是OpenJDK19的版本
- Linux/macOS操作:
- 打开终端编辑配置文件,bash用户编辑
~/.bashrc,zsh用户编辑~/.zshrc,添加:export JAVA_HOME=/你的JDK19安装路径 export PATH=$JAVA_HOME/bin:$PATH - 执行
source ~/.bashrc或source ~/.zshrc生效,再验证版本
- 打开终端编辑配置文件,bash用户编辑
2. 调整Maven编译配置(确保版本一致)
在你的pom.xml里加入编译插件配置,强制指定编译用的JDK版本,避免IDE和终端环境不一致:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <!-- 这里填19对应JDK19,要是想兼容JDK8就改成1.8 --> <source>19</source> <target>19</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- 确保可执行jar的主类配置正确 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <!-- 替换成你的主类全路径,比如com.example.Main --> <mainClass>你的主类完整路径</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
- 如果打算在JDK8上运行jar,把
<source>和<target>改成1.8,同时检查代码里有没有用JDK8以后的API(比如var、Java11+的HttpClient等),有就替换成兼容写法。
3. 重新构建运行
- 执行
mvn clean package重新生成jar包 - 再在终端运行
java -jar programExample.jar jsonToRead.json jsonOutput.json,此时用的是JDK19环境,不会再报版本错误。
额外检查
- 要是终端还是显示旧JDK版本,排查是不是有其他地方配置了JDK路径(比如系统里装了多个JDK,或者IDE终端继承了旧环境)
- 确认IDE里的Maven使用的是JDK19:在IDE设置里找到Maven的运行JDK,指定为OpenJDK19
内容的提问来源于stack exchange,提问作者raynbelh
相关产品推荐
相关产品推荐

