JAVA 启动项目报错Unsupported major.minor version 52.0

首先说明:出现这个错的原因是由于jar包的编译版本和实际运行环境的版本不一致导致的

背景:

由于本地开发使用的是jdk 1.8; 客户环境是jdk 1.7;发到客户环境后一启动,报错:
Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1……

解决方案:

1: dev 环境安装jdk 1.7, 重新编译,打包

这种方法当然可以解决问题,但是不是最好的办法,因为dev环境还有很多jdk 1.8 的项目。同时代码中有使用jdk 1.8的新特性,切换版本后还要重新修改代码,测试。。。

2: 打包安装文件给客户的时候把,jre环境也带上,通过写脚本来指定jre来启动jar,

这样就可以既不用修改客户的环境,也不用修改我们dev的宿主环境,把jre环境,jar包,脚本都copy到客户环境就OK了。
Step1: 安装jdk, 然后把安装目录下的jre目录copy 到安装文件中


image.png

Step2: 把项目打成jar 包,放在jre的同级目录下
Step3: 编写启动脚本,指定运行jar包的jre(这里以bat 脚本为例)

echo off
echo "the running env of abc.jar is jdk 1.8 "

echo "start script"
set "CURRENT_DIR=%cd%"
echo "CURRENT_DIR=%CURRENT_DIR%"

set "JRE_HOME=%CURRENT_DIR%"
if exist "%JRE_HOME%\jre18\bin\java.exe" goto okHome

:okHome
set "EXECUTABLE=%JRE_HOME%\jre18\bin\java.exe"
echo "EXECUTABLE=%EXECUTABLE%"
if exist "%EXECUTABLE%" goto okExec

:okExec
echo "start to exec jar"
%EXECUTABLE% -jar %CURRENT_DIR%\abc.jar

echo "start jar done"
pause

Step4: 打包发给客户,直接右键以管理员身份运行start.bat脚本就完美解决这个问题了

你可能感兴趣的:(JAVA 启动项目报错Unsupported major.minor version 52.0)