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