【问题标题】:Fail to deploy bare bone webapp to tomee 7.1.0 running openjdk 11无法将裸骨 webapp 部署到运行 openjdk 11 的 tomee 7.1.0
【发布时间】:2019-02-24 09:39:31
【问题描述】:

我计划将 webapp 从 java 8/tomee 7.0.4 迁移到 java 11/tomee 7.1.0,但仍然不成功。所以我编写了一个只有一个 facelet 页面和一个托管 bean 的准系统 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 的,应该更受欢迎。我想问题还是一样的。

非常感谢您的建议,我认为很多人应该有同样的问题。

【问题讨论】:

  • 请注意,您的第一个链接似乎是关于 TomEE-8-SNAPSHOT,而不是 7。

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,我下载了tomee 8.0.0-M1(但这是一个评估版),它工作正常。但我想我会在实际使用之前等待产品发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多