在TomEE上运行Java EE应用程序时,出现以下错误:


  java.lang.NoClassDefFoundError:javax / persistence / NamedStoredProcedureQuery


生成应用程序时没有编译时错误。我正在Eclipse中进行开发,并在项目属性的目标运行时下选择了Apache TomEE,以便该项目可以访问Java EE。

当项目使用Hibernate时,我在WEB-INF \ lib目录中有以下jar(据我了解,这些jar依次使用javax.persistence):


休眠-公共注释-0.4.4
休眠核心-4.3.5
休眠jpa-2.1


我已经看到了许多类似this one的问题,详细说明了解决方案是将所需的JPA jar添加到应用程序的lib目录中,一切都会很好。但是,尽管该解决方案可能行得通,但对我来说似乎有点棘手,但我希望TomEE管理JPA库本身。这是一台Java EE服务器,所以为什么不这样做。什么是干净的解决方案?

最佳答案

@JB Nizet的答案是公认的解决方案:


  从JPA 2.1开始存在此类。我猜只有您的TomEE版本
  支持JPA 2.0。实际上,TomEE的主页上说:“ Java EE 6
  Web配置文件”。JavaEE 6包含JPA 2.0,而不是2.1。– JB Nizet

07-24 09:38
查看更多