如何将我之前 运行 在嵌入式 Jetty 中的 Eclipse Tapestry Web 应用程序项目部署到独立 Jetty?

How do I deploy my Eclipse Tapestry web app project previously running in an embedded Jetty to a standalone Jetty?

我有一个使用 Eclipse 开发的 Tapestry Web 应用程序,之前 运行 使用 Maven jetty 插件使用嵌入式 Eclipse jetty,更准确地说使用 jetty:run。

该应用程序是使用 Tapestry 5.3.8 构建的,并使用 Hibernate 作为持久性提供程序。后端是 XAMPP 安装。

当我将应用程序导出到 WAR,并将其放入独立的 jetty webapps 文件夹并启动 jetty 时,出现以下错误:

Render queue error in BeginRender[Index:layout.pagelink]: 
Error obtaining injected value for field somePkg.pages.TestData.em:
Unable to add method javax.persistence.EntityGraph createEntityGraph(java.lang.String) to
class $EntityManager_14cbc42cc34: java.io.IOException: invalid constant type: 15

em是页面加载时注入的EntityManager

我认为这与 javassist / java 8 有关。后来的 Tapestry 版本(包括 5.3.8)放弃了 javassist,转而使用 ASM/Plastic.

你能运行从命令行执行以下操作吗:

mvn dependency:tree

寻找 javassist 依赖项,从记忆中 hibernate 可能会使用它。可能最好查看 javassist 版本是否与 java 8 兼容。如果不兼容,您将需要使用兼容 jre8 的 hibernate/javassist 版本或 运行 与 JRE7。