我正计划将一个webapp从java 8/tomee 7.0.4迁移到java 11/tomee 7.1.0,但仍然没有成功。所以我写了一个只有一个facelet页面和一个托管bean的barebone webapp。这在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的问题似乎源于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的,它应该更受欢迎。我认为问题仍然是一样的。
我很欣赏你的建议,我认为很多人都应该有同样的问题。
发布于 2019-02-24 18:16:12
尝试升级您的tomcat/tomee到最新版本,或者降级您的Java版本,因为不兼容的版本往往会触发这些NoSuchMethod/NoSuchFile异常。
可能是一种技术依赖于另一种技术,并且知道某个API版本,但您正在尝试使用更高的API版本,这可能是完全不同的。
另一种可能性是tomee还没有准备好使用java11(但这似乎相当不可能)。
https://stackoverflow.com/questions/54850580
复制相似问题