无法部署裸骨web应用程序以运行OpenJDK 11的tomee 7.1.0

时间:2019-02-24 09:39:31

标签: java maven tomcat8 java-11 tomee-7

我计划将Web应用程序从Java 8 / tomee 7.0.4迁移到Java 11 / tomee 7.1.0,但仍未成功。因此,我编写了一个只有一个facelet页面和一个托管bean的准系统webapp。这适用于Java 10 / tomee 7.1.0,但不适用于Java11。错误为:

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)

在Google搜索http://tomee-openejb.979440.n4.nabble.com/Some-jars-in-TomEE-8-SNAPSHOT-are-not-Java-11-compatible-td4685162.html之后,似乎该问题源自jaxb-impl。因此,我尝试根据https://winterbe.com/posts/2018/08/29/migrate-maven-projects-to-java-11-jigsaw/添加到pom.xml,但失败了。我恢复了pom.xml并根据Java 11 package javax.xml.bind does not exist进行了修改,但同样失败。

这是针对不太流行的tomee服务器。但是tomee 7.1.0是基于tomcat 8.5的,它应该更受欢迎。我认为问题仍然存在。

我们非常感谢您的建议,我认为许多人应该遇到同样的问题。

1 个答案:

答案 0 :(得分:1)

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

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

另一种可能性是tomee尚未准备好使用Java 11(但这似乎不太可能)。