4

我有一个使用gwt的web应用程序项目,并使用谷歌应用程序引擎来存储我的数据。当我运行项目中,我得到以下错误:持久性管理器未能实例化

WARNING: Error for /proj/saat 
java.lang.NoSuchFieldError: NUCLEUS_CONTEXT_LOADER 
    at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.<clinit>(JDOPersistenceManagerFactory.java:101) 

最后一点钟报是,我试图存储在我的谷歌应用程序引擎的类。 proj是我的项目的名称。我尝试实例我在saatServiceImpl PersistenceManager的服务器软件包如下:

private static final PersistenceManagerFactory pmf = JDOHelper 
     .getPersistenceManagerFactory("transactions-optional"); 

与此行的误差在发出。我不知道如何解决这个问题。任何提示表示赞赏。

回答

2

对于GAE环境,您正在使用错误的DataNucleus库,请检查this table并在您的项目中设置合适的库。

+0

我有DataNucleus Enhancer(version 1.1.4)和app engine sdk 1.7.4,我正在运行java 1.6.0-38。所以我认为我需要DataNucleus 3.1+,但我不知道如何安装或更改设置。 – BBB 2013-02-24 19:07:22

+0

这取决于你的项目。如果您正在使用maven,请查看项目的'mvn dependency:tree'输出。如果您使用的是eclipse,请尝试创建一个新项目,检查它是否有效,并将配置与项目进行比较。 – 2013-02-24 19:40:39

1

我不知道如何或为何但是一种适合我的工作是我打开了com.google.appengine.eclipse.core.prefs和更改的属性:

gaeDatanucleusVersion = V2 到 gaeDatanucleusVersion = v1