debian 12+tomcat 10.1.26+jdk1.8.281,tomcat启动报错:Unrecognized option: --add-opens=java.base/java.lang

1、 报错情况

问题如图所示:
在这里插入图片描述
报错提示:
Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.

2、错误原因分析

报错信息说的非常清楚:他不认识这个–add-opens选项,导致不能启动java虚拟机。
这个–add-opens选项是java9及以上版本支持的。当前环境jdk为java8 不能识别这个参数。
Tomcat 10.1.x 系列的默认启动配置是针对 Java 11 + 优化的,tomcat10 对于jdk的版本要求为:8U272及以上版本,当前使用的jdk版本可用,但会有不兼容的参数选项。

3、解决办法

移除java8 不支持的参数。
具体做法:
步骤一:找到tomcat10.1.26的启动文件,其JVM参数默认配置在catalina.sh文件里,找到并修改:
切换到tomcat的bin目录:
sudo nano catalina.sh
在这里插入图片描述
查找ctrl+w
在这里插入图片描述
在这里插入图片描述
找到后将其屏蔽:
在这里插入图片描述

当然了意外总会出现,比如此时,我已经将–add-opens选项全部注释,结果启动报错了。
如下所示:
在这里插入图片描述
错误信息:
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap 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
这里有一个关键的信息 :class file version 55.0this version of the Java Runtime only recognizes class file versions up to 52.0

意思是说当前环境的jdk版本只能识别52.0版本的class文件,而这个org/apache/catalina/startup/Bootstrap 是由更高版本的jdk编译的,所以并不支持!java.lang.UnsupportedClassVersionError也就是不支持的class版本错误。
Bootstrap作为tomcat的核心类在此环境里无法被识别,由此可以得到结论:tomcat 10.1.26并不支持jdk 1.8.281

tomcat 10.1.X版本不支持jdk 1.8.0.281听见了么?! !!

乖,听我的,别试了,没用,又是做无用功的一天!
class file version 55.0对应的是jdk 11。
好了,至此这个问题就这样,接下来 该换tomcat版本还是jdk版本就再说了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值