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.0 与this 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版本就再说了。

1303

被折叠的 条评论
为什么被折叠?



