You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已安装最新版Java运行jar仍报JNI类版本不兼容错误如何解决

问题根因

先明确Java类文件版本和JDK版本的对应关系:

  • 52.0 对应 JDK 8
  • 59.0 对应 JDK 15
    报错核心原因是运行jar包时实际调用的Java运行时是JDK 8,并没有用到安装的高版本Java——这是系统环境变量中旧版Java路径优先级更高导致的,和是否重启电脑没有关系。
第一步:验证当前生效的Java版本

打开命令行/终端,执行以下命令:
java -version
如果输出的版本号是1.8.x,即可确认是环境变量配置问题,不是高版本Java安装失败。

解决方法

方案1:修正环境变量优先级(永久生效)

Windows系统

  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  2. 在「系统变量」列表中找到Path项,双击编辑
  3. 把你安装的高版本JDK的bin目录路径(默认路径类似C:\Program Files\Java\jdk-15\bin)移动到所有Java相关路径的最顶部;旧版JDK/JRE的路径可以直接删除,或者移动到高版本路径下方
    注意:旧版Oracle JRE默认会在C:\ProgramData\Oracle\Java\javapath、C:\Windows\System32目录下放置优先级极高的java.exe,必须把高版本JDK的bin路径放到这两个路径前面,或者直接删除这两个无效的旧Java路径
  4. 关闭所有已打开的命令行窗口重新打开,再次执行java -version确认版本为15及以上,再运行jar包即可

macOS/Linux系统

  1. 终端执行/usr/libexec/java_home -V(macOS)或which java(Linux),查看本机已安装的所有JDK路径,确认高版本JDK的安装位置
  2. 编辑对应shell的配置文件:bash编辑~/.bashrc,zsh编辑~/.zshrc,添加以下配置(路径替换为你本机高版本JDK的实际路径):
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
  1. 执行source ~/.bashrc(对应bash)或source ~/.zshrc(对应zsh)让配置生效,执行java -version确认版本正确后即可正常运行jar包

方案2:临时指定高版本Java运行(无需改环境变量)

如果不想修改全局环境变量,可以直接用高版本Java的绝对路径执行jar包,Windows示例:
"C:\Program Files\Java\jdk-15\bin\java.exe" -jar 你的jar包文件名.jar
macOS/Linux示例:
/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home/bin/java -jar 你的jar包文件名.jar

方案3:IDE运行场景

如果是在IDEA、Eclipse等IDE中运行出现该报错,直接打开IDE的项目结构设置,把项目SDK、模块编译版本、运行配置的JRE都修改为15及以上版本即可——IDE运行时不会默认读取系统全局的Java环境变量配置。

附完整报错信息
Exception in thread "main" java.lang.UnsupportedClassVersionError: MapConverter has been compiled by a more recent version of the Java Runtime (class file version 59.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)

内容的提问来源于stack exchange,提问作者Cooper Overstreet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:36:24