天天看点

升级Tomcat10后应用无法启动解决方法

场景:原有项目是使用springboot2.2 + jdk1.8 + Tomcat8在服务器上以war包方式运行,由于安全扫描到许多Tomcat8的漏洞,所以需要将Tomcat8升级到Tomcat10;

操作:tomcat官网下载到Tomcat10.0.4免安装版,解压之后将程序放在Webapps下启动Tomcat

结果:【7456】毫秒之后服务将启动,就一直卡着没反应。但是Tomcat10已经启动,能够访问到tomcat内置的页面

验证1:将静态文件放到Webapps,重复上述步骤也同样可以访问到静态页面。

唯独不解析.class文件,于是百度一下,结果很少有相应的解决描述,到官网使用中文翻译过来发现一段话

升级Tomcat10后应用无法启动解决方法

于是点击上方图片中红色框中最后一个“下载离线版”下载官方提供的迁移工具二进制文件:

升级Tomcat10后应用无法启动解决方法

选择zip(pgp,sha512)下载,解压之后找到jakartaee-migration-0.2.0.jar,如下图

升级Tomcat10后应用无法启动解决方法

将需要进行二次编译的war包拷贝到和jakartaee-migration-0.2.0.jar同一个目录下(此处不同目录会报密钥什么的错误),然后执行二次编译命令即可编译成功,编译成功的war包扔到webapps目录下可以成功启动。

编译命令:

    java -jar jakartaee-migration-0.2.0.jar <source> <destination>

<source>:需要进行二次编译的war包路径

<destination>:编译之后的war包路径

建议:都放在同一个目录下即可

找不到可从这里下载:

https://download.csdn.net/download/xufei512/19260438

题外话(Jakarta是个啥):

2017 年 8 月,Oracle(甲骨文)决定将 Java EE(Java Enterprise Edition)移交给开源组织,最后 Eclipse 基金会接手。这应该是甲骨文实现对 Java 品牌控制的最新举措,尽管之前 Sun 的资产已经被甲骨文围剿得只剩一个 VirtualBox 还能喘口气。

不过,甲骨文可不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和"Enterprise Profile"两个后续按名字,最终前者以 64.4% 的票数获胜。

也就是说,Java EE 已经正式更名为 Jakarta EE(雅加达)。

与此同时,Glassfish 正式更名为 Eclipse Glassfish,Java Community Process 更名为 Eclipse EE.next Working Group,就连 Oracle 开发管理团队现在也变成了 Eclipse Enterprise for Java 项目管理委员会。

Eclipse负责人Mike Milinkovich还特别强调,现在 Jakarta EE 是他们首要的项目,很快会完善开发的各种支持,另外,不要再用 EE4J 这个老名字了。

Jakarta EE 的由来:

这个名字来自于Jakarta,一个早期的Apache开源项目,用于管理各个Java子项目,诸如Tomcat, Ant, Maven, Struts, JMeter, Velocity, JMeter, Commons等。2011年12月,在所有子项目都被迁移为独立项目后,Jakarta名称就不再使用了。