【问题标题】:NoClassDefFoundError Could not initialize class EMFServiceNoClassDefFoundError 无法初始化类 EMFService
【发布时间】:2011-07-16 15:45:57
【问题描述】:

我在我的 Eclipse 中导入了一个应用程序引擎项目。它在我以前的笔记本电脑上运行良好,这里我从我的旧机器上复制了 eclipse 目录并将项目导入其中。现在我看到一个错误 "java.lang.NoClassDefFoundError: Could not initialize class sharepro.java.dao.EMFService" 。错误在“EntityManager em = EMFService.get().createEntityManager();”行中。我已经添加了所有的罐子。我错过了哪个 jar 上的任何指针或任何 conf 问题??

感谢和问候 巽他

【问题讨论】:

  • 我遇到了类似的问题。您需要做的是检查新项目中使用的数据核/jdo/jpa 版本。不同的版本可能有不同的类的语法实现,对应一个数据模型。

标签: google-app-engine entitymanager


【解决方案1】:

我意识到这是一篇旧帖子,但我刚刚遇到了这个确切的问题,今天(2013 年 6 月)我花了几个小时才弄明白。我仍然不确定为什么我的解决方案会奏效(或者更确切地说,为什么我的情况会导致错误),但这是我为解决它所做的:

我的项目结构中有一个源文件夹,其中有一个 /test 文件夹,其中有一些 JUnit 的东西。我删除了那个文件夹,现在一切正常。很奇怪。

我看到人们针对此问题提出的其他建议包括:

  1. 确保您已将适当的 .jar 文件复制到您的 /war/WEB-INF/lib 文件夹中
  2. 确保您没有从客户端代码调用 EMF 单例(如果您使用 GWT)
  3. 确保您已为您的项目启用数据存储选项(项目属性 > Google > App Engine > 数据存储 > 使用 Datanucleus JDO/JPA 访问数据存储

【讨论】:

    【解决方案2】:

    (我知道这是一篇旧帖子,但以防其他人需要帮助)

    您的错误很可能出现在您的 JDO 中,我刚刚遇到了这个问题,我没有正确注释 JDO,并且遇到了与您相同的错误

    【讨论】:

      【解决方案3】:

      这是因为增强器无法正确增强您的实体。您应该增强实体。

      【讨论】:

      • 该错误与实体无关。实体管理器是没有被初始化的。
      • @Shedolamack 实际上它可以与实体相关。我两次遇到这个错误。在这两种情况下,我只是在实体关系中更改注释,突然问题出现了。我试图清除数据库并恢复以前的注释,但我无法解决它。
      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 2014-12-05
      • 2019-11-28
      • 2019-08-22
      • 2017-02-28
      • 2016-09-03
      • 2017-06-29
      • 1970-01-01
      相关资源
      最近更新 更多