google-app-engine - Datanucleus 在 Google App Engine 1.7 中使用了错误的增强器

标签 google-app-engine jpa-2.0 datanucleus

在 Eclipse 中使用 Datanucleus 插件增强 GAE 1.7.0 类时,我很难让 Datanucleus 2 正常工作。当我按照此处的手动步骤操作时,这在旧版本的 GAE 中运行良好:

http://www.datanucleus.org/products/accessplatform/guides/eclipse/index.html

但自从升级后,GAE 现在包括这些库(看起来是它们的更新版本),而且 GAE 还具有一个新的“增强器”标志,您可以设置它。尽管如此,我还是找不到在 Eclipse 中设置这个标志。当我想要 V2 库和 Datanucleus 根据此错误发生冲突时,GAE 似乎仍包含 v1 库:

Jul 1, 2012 5:59:55 PM org.datanucleus.enhancer.DataNucleusEnhancer <init>
INFO: DataNucleus Enhancer : Using ClassEnhancer "ASM" for API "JPA"
Exception in thread "main" java.lang.NoSuchFieldError: NUCLEUS_CONTEXT_LOADER
    at org.datanucleus.NucleusContext.<clinit>(NucleusContext.java:73)
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:171)
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1265)

我尝试过很多不同的东西。我试过使用所有默认值。我尝试将 v2 库添加到 Datanucleus 运行时类路径条目中。我试过在 src 和库中删除 GAE 1.7.0 SDK 中的 v1 库。但不知何故,GAE 仍在停止(或试图停止 V1 库。我什至尝试了手动设置上面链接指定的配置的旧方法。这有点令人沮丧,因为我现在看起来在我根本无法使用这些库的情况下。至少对于旧版本的 GAE,我可以手动将其设置为正常工作。现在似乎没有任何工作。有什么建议吗?

最佳答案

我遇到了同样的错误,并且能够通过以下方式在我的项目中解决它:

  • 执行 DavidB 在评论中建议的操作,而不修改首选项中的 DataNucleus JPA 设置。
  • 从 war/WEB-INF/lib 中删除所有“V1”jar

为了阐明 DavidB 的建议,请打开包含您的项目的目录。将有一个名为“.settings”的文件夹,打开它并编辑 com.google.appengine.eclipse.core.prefs。只需将第三行从 gaeDatanucleusVersion=v1 更改为 gaeDatanucleusVersion=v2

完成此操作后,从 war/WEB-INF/lib 目录中删除以下 jar:

  • datanucleus-appengine-1.0.10.final.jar
  • datanucleus-core-1.1.5.jar
  • datanucleus-jpa-1.1.5.jar
  • geronimo-jpa_3.0_spec-1.1.1.jar
  • geronimo-jta_1.1_spec-1.1.1.jar
  • jdo2-api-2.3-eb.jar

重新启动 eclipse,你应该可以开始了。

关于google-app-engine - Datanucleus 在 Google App Engine 1.7 中使用了错误的增强器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11286020/

相关文章:

google-app-engine - Google App Engine 中的默认文档

java - 无法在应用引擎中保留 jpa 实体

JPA 1.0 @OrderBy 使用字段名称与 JPA 2.0 @OrderColumn 使用列名称

jpa-2.0 - 非 PK 字段的生成值

google-app-engine - 如何为 Google App Engine Go 开发设置 IntelliJ IDEA?

python - 图片不显示 html <img/>

java - org.hibernate.hql.internal.ast.ErrorCounter : unexpected token: (

java - 如何使用 JDO 从数据库中获取特定数量的行?

dependency-injection - 你可以在持久实体中使用依赖注入(inject)吗?

java - Datanucleus 增强器不适用于 appengine