Javax.persistance 在 TomEE 中不可用
Javax.persistance not available in TomEE
当 运行 我的 Java EE 应用程序在 TomEE 上时,我收到以下错误:
java.lang.NoClassDefFoundError: javax/persistence/NamedStoredProcedureQuery
当我在 Eclipse 中开发 app.I 并在 目标运行时 [=27] 下选择 Apache TomEE 时没有编译时错误=] 在项目属性中,以便项目可以访问 Java EE。
由于该项目使用 Hibernate,我在 WEB-INF\lib 目录中有以下 jar(我的理解是这些 jar 依次使用 javax.persistence):
- hibernate-commons-annotations-4.0.4
- hibernate-core-4.3.5
- hibernate-jpa-2.1
我看到一堆问题,比如this one,详细说明解决方案是将所需的JPA jar 添加到应用程序的lib 目录中,一切都会好起来的。但是,尽管该解决方案可能有效,但对我来说听起来很老套,但我希望 TomEE 自己管理 JPA 库。它是一个 Java EE 服务器,所以它为什么不这样做。什么是干净的解决方案?
@JB Nizet的回答是公认的解决方案:
This class exists since JPA 2.1. I guess your TomEE version only
supports JPA 2.0. And indeed, thehome page of TomEE says: "Java EE 6
Web Profile". Java EE 6 includes JPA 2.0, not 2.1. – JB Nizet
当 运行 我的 Java EE 应用程序在 TomEE 上时,我收到以下错误:
java.lang.NoClassDefFoundError: javax/persistence/NamedStoredProcedureQuery
当我在 Eclipse 中开发 app.I 并在 目标运行时 [=27] 下选择 Apache TomEE 时没有编译时错误=] 在项目属性中,以便项目可以访问 Java EE。
由于该项目使用 Hibernate,我在 WEB-INF\lib 目录中有以下 jar(我的理解是这些 jar 依次使用 javax.persistence):
- hibernate-commons-annotations-4.0.4
- hibernate-core-4.3.5
- hibernate-jpa-2.1
我看到一堆问题,比如this one,详细说明解决方案是将所需的JPA jar 添加到应用程序的lib 目录中,一切都会好起来的。但是,尽管该解决方案可能有效,但对我来说听起来很老套,但我希望 TomEE 自己管理 JPA 库。它是一个 Java EE 服务器,所以它为什么不这样做。什么是干净的解决方案?
@JB Nizet的回答是公认的解决方案:
This class exists since JPA 2.1. I guess your TomEE version only supports JPA 2.0. And indeed, thehome page of TomEE says: "Java EE 6 Web Profile". Java EE 6 includes JPA 2.0, not 2.1. – JB Nizet