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