java版本配置造成脚本无法启动服务
场景:使用jenkins部署java,以前45服务器是使用的jdk8,新项目需要指定是jdk17,只写了环境变量
本地使用普通用户执行
java -version
返回了我们所需要的版本:
问题:本地执行bash start启动不会出现问题,当使用jenkins通过ssh -t 进入服务所在服务器执行时候,无法启动对应的java服务。发现应用打出了如下日志:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes
class file versions up to 52.0
原因:
这个错误信息说明你正在尝试运行一个使用比你当前安装的 Java 版本更高的版本编译的 Java 程序。具体来说,你想要运行的类文件(在这种情况下是 org/springframework/boot/loader/JarLauncher)是使用 Java 17 编译的(类文件版本号为 61.0),但你正在尝试使用版本较旧的 Java 运行它,而该版本只能识别类文件版本号最高为 52.0(对应 Java 8)的类文件。
要解决这个问题,你可以采取以下措施之一:
-
将你的 Java 安装升级到支持类文件版本号 61.0 或更高的版本。你可以从 Oracle 网站或 OpenJDK 网站下载最新版本的 Java。
-
使用与你当前的 Java 安装兼容的 Java 编译器重新编译 Java 程序。如果你有源代码的访问权限,你可以使用较低版本的 Java 编译代码,以生成与你当前安装兼容的类文件。例如,如果你正在运行 Java 8,你可以使用
-target 8标志编译代码,以生成与 Java 8 兼容的类文件。
一旦你解决了版本不匹配的问题,你就可以在没有遇到 UnsupportedClassVersionError 的情况下运行 Java 程序了。
解决:
查看系统默认java
在 Linux 上同时安装了多个版本的 JDK 后,你可以使用 `update-alternatives` 命令来设置默认版本。`update-alternatives` 命令是一个命令行工具,用于在 Debian 系统中管理软件的替代品。
以下是设置默认 JDK 版本的步骤:
1. 打开终端窗口并使用管理员权限运行命令 `update-alternatives --config java`。
2. 这将会显示当前安装的 JDK 版本列表,并提示你要选择哪个版本作为默认版本。使用数字键选择你想要的默认 JDK 版本,并按 Enter 键。
3. 接下来,使用 `update-alternatives --config javac` 命令来设置默认的 Java 编译器版本。同样,选择你想要的默认 JDK 版本,并按 Enter 键。
4. 现在你已经成功设置了默认的 JDK 版本。你可以使用 `java -version` 和 `javac -version` 命令来验证默认 JDK 版本是否正确。
请注意,不同的 Linux 发行版可能略有不同的 `update-alternatives` 命令选项。如果以上步骤无法正常工作,请参考你的 Linux 发行版的文档,以获得更准确的指导。
本文来自博客园,作者:Devinhao,转载请注明原文链接:https://www.cnblogs.com/Devinhao/articles/17482892.html

浙公网安备 33010602011771号