JDK8升级到OpenJDK17,Tomcat7启动闪退

项目场景:

环境: Windows + OpenJDK17 + Tomcat7
背景: 旧项目需要升级jdk,从jdk8升级到openjdk17,升级后系统缺少javax相关包,将javax.jws-api-1.1.jar、jaxb-api-2.3.1.jar、jaxws-api-2.3.1.jar等包引入后,项目编译通过。


问题描述

项目打包放入tomcat后,在bin目录执行startup.bat闪退。


原因分析与问题解决:

此次改动主要修改的是jdk版本,初步判断是jdk版本不同导致的问题。

1.问题定位

startup.bat启动闪退,log目录没有日志文件,要定位问题,就要确定startup脚本执行情况。
在startup.bat文件结尾添加pause关键字,让脚本执行后窗口暂停。

......
call "%EXECUTABLE%" start %CMD_LINE_ARGS%

:end
rem 添加pause关键字
paruse

执行结果:

在这里插入图片描述
依旧闪退,通过打印信息可以看出,jdk已经调整为了openjdk-17.0.7。
使用java -version命令应该可以看到相同结果:

在这里插入图片描述
发现问题,系统环境变量已经调整为jdk17了,tomcat启动信息也表明jdk17已生效,但是上述命令结果仍旧是jdk8。难道是环境变量没保存?
查看环境变量配置:

在这里插入图片描述在这里插入图片描述

环境变量配置符合预期,为什么没有生效?
查找资料得知:如果PATH变量中多个路径下都有某个相同命名的可执行文件,从前往后找时找到第一个就会停止。
原文链接:http://www.juzicode.com/computer-basis-path-cmd-search-path/

解决方案: 修改环境变量顺序,将JAVA_HOME上移至第一位:

在这里插入图片描述

重新执行java -version命令,结果正常:

在这里插入图片描述

本以为问题解决,可启动tomcat时依旧闪退。。。


2.重新定位

tomcat启动执行startup.bat文件后,会去寻找catalina.bat文件并执行,我们执行catalina.bat文件,看看会不会有新的线索:

在这里插入图片描述
可以看到,catalina.bat有多种启动方式,其中:start参数是默认启动方式,也就是本次闪退的启动方式。
使用debug参数启动:

在这里插入图片描述
系统卡在正在初始化jdb…,没有多余信息。
使用run参数启动:

在这里插入图片描述
这次有了报错信息:-Djava.endorsed.dirs=C:\Program Files\apache-tomcat-7.0.72\endorsed is not supported. Endorsed standards and standalone APIs
查询资料找到官网相关说明:https://docs.oracle.com/javase/10/migrate/toc.htm#JSMIG-GUID-8E83E51A-88A3-4E9A-8E2A-66E1D66A966C

在这里插入图片描述

解决方案: 使用推荐的方式,移除catalina.bat脚本中的java.endorsed.dirs启动参数:

在这里插入图片描述

再次使用run参数启动:

在这里插入图片描述

这次启动成功了,但是日志有如下报错:

在这里插入图片描述

相信这个问题在jdk升级到9之后大家都遇到过,jdk9之后引入模块化系统,影响了基础包的引用。
解决方案: 添加启动参数(tomcat8之后catalina自带相关配置):

......
rem Configure module start-up parameters
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.lang=ALL-UNNAMED"
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.io=ALL-UNNAMED"
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.util=ALL-UNNAMED"
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"

添加配置后tomcat启动正常:

在这里插入图片描述

至此,此次tomcat闪退问题解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值