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

时间:2015-04-15 08:51:05

标签: hibernate maven xampp jetty tapestry

我有一个使用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。

1 个答案:

答案 0 :(得分:2)

我认为这与javassist / java 8有关。后来的tapestry版本(包括5.3.8)已经抛弃了javassist,转而支持ASM / Plastic。

您可以从命令行运行以下命令:

mvn dependency:tree

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