无法将裸机 webapp 部署到 tomee 7.1.0 运行 openjdk 11

Fail to deploy bare bone webapp to tomee 7.1.0 running openjdk 11

我打算将一个网络应用程序从 java 8/tomee 7.0.4 迁移到 java 11/tomee 7.1.0,但仍然没有成功。因此,我编写了一个只有一个 facelet 页面和一个托管 bean 的准系统 Web 应用程序。这适用于 java 10/tomee 7.1.0 但不适用于 java 11。错误是:

java.lang.IllegalStateException: Cannot get Unsafe.defineClass
....
java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.String, [B, int, int, java.lang.ClassLoader, java.security.ProtectionDomain)

经过一些谷歌搜索,http://tomee-openejb.979440.n4.nabble.com/Some-jars-in-TomEE-8-SNAPSHOT-are-not-Java-11-compatible-td4685162.html it seems that the problem originates from jaxb-impl. So I tried adding to pom.xml according to https://winterbe.com/posts/2018/08/29/migrate-maven-projects-to-java-11-jigsaw/ which failed. I restored pom.xml and modified according to 也失败了。

这是不太受欢迎的tomee服务器。但是tomee 7.1.0是基于tomcat 8.5的,应该更受欢迎。我想问题还是一样。

不胜感激,我想很多人应该都有同样的问题。

尝试将您的 tomcat/tomee 升级到最新版本,或将您的 Java 版本降级,因为不兼容的版本往往会引发这些 NoSuchMethod/NoSuchFile 异常。

可能是一种技术依赖于另一种技术,并且知道某个 API 版本,但您正在尝试使用更高的 API 版本,这可能完全是不一样。

另一种可能性是 tomee 还没有准备好与 java 11 一起工作(但这似乎不太可能)。