【发布时间】:2014-08-20 20:53:34
【问题描述】:
我正在尝试将我的 android 应用程序连接到我的后端端点(在 Google 的 App Engine 中),以便我可以将我的 java 对象存储在 Google 的数据存储区中。但是,当我尝试初始化 PersistenceManagerFactory 对象时,我收到了在本文末尾看到的错误 - The PersistenceManagerFactory class must define a static method。
我正在尝试使用以下代码初始化对象,并注意:我确实在类路径中有该库。
public static PersistenceManagerFactory InitializePersistanceManagerClass(){
Properties properties = new Properties();
properties.setProperty("javax.jdo.PersistenceManagerFactoryClass", "org.datanucleus.api.jdo.JDOPersistenceManagerFactory");
properties.setProperty("javax.jdo.option.ConnectionURL", "appengine");
properties.setProperty("javax.jdo.option.NontransactionalRead", "true");
properties.setProperty("javax.jdo.option.NontransactionalWrite", "true");
properties.setProperty("javax.jdo.option.RetainValues", "true");
properties.setProperty("datanucleus.appengine.autoCreateDatastoreTxns", "true");
properties.setProperty("datanucleus.appengine.singletonPMFForName", "true");
PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(properties);
return pmf;
}
错误中没有列出行号,但我 90% 确定问题出在上面的代码中,或者我用于 persistenceManagerFactory 的类中。此代码运行时的错误如下所示。有任何想法吗?我真的不明白问题是什么......
08-23 09:10:31.826 7932-7932/com.myApp.myModule E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.myApp.myModule, PID: 7932
javax.jdo.JDOFatalInternalException: The PersistenceManagerFactory class must define a static method
PersistenceManagerFactory getPersistenceManagerFactory(Map props).
The class "org.datanucleus.jdo.JDOPersistenceManagerFactory"
defines a non-static getPersistenceManagerFactory(Map props) method.
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(Unknown Source)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(Unknown Source)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(Unknown Source)
at com.myApp.myModule.forStorage.PMF.<init>(Unknown Source)
at com.myApp.myModule.Login.onConnected(Unknown Source)
at wz.a(Unknown Source)
at rb.e(Unknown Source)
at rb.d(Unknown Source)
at rd.onConnected(Unknown Source)
at wz.a(Unknown Source)
at wz.a(Unknown Source)
at wy.a(Unknown Source)
at wy.a(Unknown Source)
at wv.b(Unknown Source)
at wu.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5872)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)
at dalvik.system.NativeStart.main(Native Method)
NestedThrowablesStackTrace:
java.lang.NullPointerException
at javax.jdo.JDOHelper.forName(Unknown Source)
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(Unknown Source)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(Unknown Source)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(Unknown Source)
at com.myApp.myModule.forStorage.PMF.<init>(Unknown Source)
at com.myApp.myModule.Login.onConnected(Unknown Source)
at wz.a(Unknown Source)
at rb.e(Unknown Source)
at rb.d(Unknown Source)
at rd.onConnected(Unknown Source)
at wz.a(Unknown Source)
at wz.a(Unknown Source)
at wy.a(Unknown Source)
at wy.a(Unknown Source)
at wv.b(Unknown Source)
at wu.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5872)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
您似乎在那里使用了一些古老的 JDO 实现 jar。 org.datanucleus.api.jdo.JDOPersistenceManagerFactory 是要使用的类,而不是原始应用引擎的旧文档中提到的东西
-
谢谢,但我在修改代码后收到同样的错误,我收到的错误是:akm: PersistenceManagerFactory 类必须定义一个静态方法 PersistenceManagerFactory getPersistenceManagerFactory(Map props)。 “org.datanucleus.api.jdo.JDOPersistenceManagerFactory”类定义了一个非静态的getPersistenceManagerFactory(Map props)方法。 ,,,,,,,,,,,还有什么想法吗?
-
显然该消息是完全错误的,根据github.com/datanucleus/datanucleus-api-jdo/blob/master/src/main/…,所以建议您将注意力转向抛出该异常的软件
-
嗯。我不知道从哪里开始寻找......过去几天我一直在努力解决这个问题。我应该查看软件的哪个部分?这似乎应该更清楚一点,因为我的意图是使用 appengine 制作一个简单的应用程序......
-
谁知道“ako.a”是什么?一些安卓垃圾?它抛出异常
标签: java android google-app-engine datanucleus