我们计划将我们的项目从 java 8(当前在 tomcat 7 上运行)迁移到 java 11,因为 rt.jar 文件不再可用,并且 tomcat 启动需要sun.misc包中的类,例如sun.misc.GC. 此外,我们的应用程序使用javax.xml.ws.WebServiceFeature. 我们没有得到任何java.lang.NoClassDefFoundError应用程序无法启动。如何在 java 11 中解决这个依赖关系?
2 回答
Tomcat 7 不适用于 Java 11。您需要将应用程序服务器升级到更新版本。
由于 Tomcat 团队尚未列出其产品的 Java 11 兼容性,因此最好的办法是获取最新的发布版本,看看它是否有效(提示,我上个月做过,9.0.12 有效)。
之后,您还需要查看自己的应用程序是否在 JDK 11 下工作,以及是否可以编译。
您遇到的任何错误,您都需要找到替代方案,通常相同的 API 已经作为中央存储库中的 Maven 包可用。
对于您关于javax.xml.ws.WebServiceFeature在 Java 11 中哪里可以找到的问题的另一部分......它已从 rt.jar 移出并移至另一个名为Glassfish Metro的项目中。
就个人而言,我发现 Glassfish Metro 页面几乎没有帮助,至少在告诉我如何添加依赖项方面,但我最终想通了。对于 Maven,将以下内容添加到您的 pom 文件中。(2.3.1 版对我有用。看起来最新的是 2.4.3 版。)
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>webservices-rt</artifactId>
<version>2.3.1</version>
</dependency>
其他依赖管理工具的信息可以在
https://mvnrepository.com/artifact/org.glassfish.metro/webservices-rt/2.3.1 https://search.maven.org/artifact/org.glassfish.metro/webservices-rt/2.3.1/jar