简要说明
- 在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)
具体报错(来波图更清楚)
- 下面是我在idea中写java项目的时候所使用的jdk版本:jdk11
- 以下是我生成的jar文件所存放的地址
- 项目在idea中的正常执行效果如下图
- 可是,然后我在cmd中执行这个jar文件,开始报错,如下图
原因解释:
简而言之:这是因为计算机上java的编译版本和java的运行版本不一致的原因
- 查看编译版本:在cmd中输入以下命令,可以发现此时的java的运行版本是jdk11的
java -version
查看java运行版本:在cmd中输入以下命令,可以发现此时的java的编译版本是jdk1.8
javac -version
解决方法
- 之所以会出现以上的编译版本和运行版本不一样,原因在于最先安装IDE编译器的时候,可能自动帮你写了一个环境变量,如下图:
- 这个路径下的有三个文件,见下图:
- 在安装了jdk11后,并且将其添加到了环境变量中的路径中后,应当将上图中的三个文件都删除掉
效果如图
会发现此时的编译版本和运行版本都变成了jdk11了
此时再运行一下之前生成的jar文件,就执行成功啦,嘿嘿!
到这就成功啦!!
喝彩!!