计算机执行所生成的jar文件报错:版本不支持

简要说明

  • 在IDE编辑器中也会出现和本文中讨论的问题一样的错误,两种情况的原因是一样的,其解决方法可以参考我的另一篇文章:MyEclipse——jdk版本不支持

报错信息:

Error: A JNI error has occurred, please check your
installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: Option 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(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)

具体报错(来波图更清楚)

  1. 下面是我在idea中写java项目的时候所使用的jdk版本:jdk11
    屏幕截图 2021-06-11 221943.png
  2. 以下是我生成的jar文件所存放的地址
    屏幕截图 2021-06-11 220448.png
  3. 项目在idea中的正常执行效果如下图
    屏幕截图 2021-06-11 223921.png
  4. 可是,然后我在cmd中执行这个jar文件,开始报错,如下图
    屏幕截图 2021-06-11 220834.png

    原因解释:

简而言之:这是因为计算机上java的编译版本和java的运行版本不一致的原因

  • 尽管你是在环境变量中已经修改了jdk的配置如下图(我习惯是用的jdk11,所以以jdk11为例,其他版本也是一样的道理,操作过程一样):
    屏幕截图 2021-06-11 224304.png
  • 但是仍然会发现,jar文件还会报上面的错误
    屏幕截图 2021-06-11 220834.png

    原因验证步骤

  1. 查看编译版本:在cmd中输入以下命令,可以发现此时的java的运行版本是jdk11的 java -version

屏幕截图 2021-06-11 221513.png

  1. 查看java运行版本:在cmd中输入以下命令,可以发现此时的java的编译版本是jdk1.8

    javac -version

屏幕截图 2021-06-11 221647.png

解决方法

  • 之所以会出现以上的编译版本和运行版本不一样,原因在于最先安装IDE编译器的时候,可能自动帮你写了一个环境变量,如下图:
    屏幕截图 2021-06-11 222847.png
  • 这个路径下的有三个文件,见下图:
    屏幕截图 2021-06-11 224651.png
  • 在安装了jdk11后,并且将其添加到了环境变量中的路径中后,应当将上图中的三个文件都删除掉

效果如图

会发现此时的编译版本和运行版本都变成了jdk11了
屏幕截图 2021-06-11 223533.png
此时再运行一下之前生成的jar文件,就执行成功啦,嘿嘿!
屏幕截图 2021-06-11 223635.png

到这就成功啦!!

喝彩!!

Contents
  1. 1. 简要说明
  2. 2. 报错信息:
    1. 2.1. 具体报错(来波图更清楚)
  3. 3. 原因解释:
    1. 3.1. 原因验证步骤
  4. 4. 解决方法
    1. 4.1. 效果如图
|