我有一个使用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。
答案 0 :(得分:2)
我认为这与javassist / java 8有关。后来的tapestry版本(包括5.3.8)已经抛弃了javassist,转而支持ASM / Plastic。
您可以从命令行运行以下命令:
mvn dependency:tree
查找javassist依赖项,从内存中hibernate可能会使用它。可能最好看看javassist版本是否与java 8兼容。如果不是,你要么需要使用jre8兼容的hibernate / javassist版本,要么运行JRE7。