Java PersistenceManagerFactory类必须定义静态方法吗?
我正在尝试将我的android应用程序连接到我的后端端点(在谷歌的应用程序引擎中),这样我就可以将我的java对象存储在谷歌的数据存储中。但是,当我尝试初始化Java PersistenceManagerFactory类必须定义静态方法吗?,java,android,google-app-engine,datanucleus,Java,Android,Google App Engine,Datanucleus,我正在尝试将我的android应用程序连接到我的后端端点(在谷歌的应用程序引擎中),这样我就可以将我的java对象存储在谷歌的数据存储中。但是,当我尝试初始化PersistenceManagerFactory对象时,我在本文末尾看到了一个错误-PersistenceManagerFactory类必须定义一个静态方法 我尝试使用以下代码初始化对象,注意:我在类路径中有库 public static PersistenceManagerFactory InitializePersistanceMan
PersistenceManagerFactory
对象时,我在本文末尾看到了一个错误-PersistenceManagerFactory类必须定义一个静态方法
我尝试使用以下代码初始化对象,注意:我在类路径中有库
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)
08-23 09:10:31.826 7932-7932/com.myApp.myModule E/AndroidRuntime﹕ 致命异常:主
进程:com.myApp.myModule,PID:7932
javax.jdo.JDOFatalInternalException:PersistenceManagerFactory类必须定义静态方法
PersistenceManagerFactory获取PersistenceManagerFactory(地图道具)。
类“org.datanucleus.jdo.JDOPersistenceManagerFactory”
定义非静态getPersistenceManagerFactory(映射道具)方法。
位于javax.jdo.JDOHelper.InvokeGetPersistenceManager工厂实现(未知源)
位于javax.jdo.JDOHelper.getPersistenceManagerFactory(未知源)
位于javax.jdo.JDOHelper.getPersistenceManagerFactory(未知源)
在com.myApp.myModule.forStorage.PMF.(未知来源)
位于com.myApp.myModule.Login.onConnected(未知源)
在wz.a(未知来源)
在rb.e(未知来源)
在rb.d(未知来源)
在未连接的道路上(未知源)
在wz.a(未知来源)
在wz.a(未知来源)
在wy.a(未知来源)
在wy.a(未知来源)
在wv.b(未知来源)
在wu.handleMessage(未知来源)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:157)
位于android.app.ActivityThread.main(ActivityThread.java:5872)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:852)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)
在dalvik.system.NativeStart.main(本机方法)
NestedThrowablesStackTrace:
java.lang.NullPointerException
位于javax.jdo.JDOHelper.forName(未知源)
位于javax.jdo.JDOHelper.InvokeGetPersistenceManager工厂实现(未知源)
位于javax.jdo.JDOHelper.getPersistenceManagerFactory(未知源)
位于javax.jdo.JDOHelper.getPersistenceManagerFactory(未知源)
在com.myApp.myModule.forStorage.PMF.(未知来源)
位于com.myApp.myModule.Login.onConnected(未知源)
在wz.a(未知来源)
在rb.e(未知来源)
在rb.d(未知来源)
在未连接的道路上(未知源)
在wz.a(未知来源)
在wz.a(未知来源)
在wy.a(未知来源)
在wy.a(未知来源)
在wv.b(未知来源)
在wu.handleMessage(未知来源)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:157)
位于android.app.ActivityThread.main(ActivityThread.java:5872)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:852)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)
在dalvik.system.NativeStart.main(本机方法)
从javax/jdo/Bundle.properties
中,我们可以看到下面的定义。
EXC_GetPMFNullPointerException
=类必须定义一个静态方法PersistenceManagerFactory getPersistenceManagerFactory(映射道具)
。类“{0}”定义了一个非静态的getPersistenceManagerFactory(Map props)
方法
catch (NullPointerException e) {
throw new JDOFatalInternalException (msg.msg("EXC_GetPMFNullPointerException", pmfClassName), e);}
从javax.jdo.JDOHelper
源代码中,我们可以推断下面的错误消息“PersistenceManagerFactory
类必须定义一个静态方法PersistenceManagerFactory getPersistenceManagerFactory(映射道具)
。类org.datanucleus.jdo.JDOPersistenceManagerFactory
定义了一个非静态的getPersistenceManagerFactory(映射道具)
方法。“来自invokeGetPersistenceManagerFactoryOnImplementation
方法中的以下代码
catch (NullPointerException e) {
throw new JDOFatalInternalException (msg.msg("EXC_GetPMFNullPointerException", pmfClassName), e);}
这是由javax.jdo.JDOHelper.forName(未知源代码)
上的java.lang.NullPointerException
引起的,它很可能来自Class.forName(name,init,loader)代码>
无论如何,您可以修改javax.jdo.JDOHelper.forName
方法来添加更多的跟踪并在其中打印更多的异常信息。这并不难。
如果需要,请告诉我“JDOAPI”的版本,然后,我可以为您提供一个 您似乎正在使用一些古老的JDO实现jar。org.datanucleus.api.jdo.JDOPersistenceManagerFactory是要使用的类,不是原始app enginethanks的旧文档中提到的东西,但在修改代码后,我收到了相同的错误,我收到的错误是:akm:PersistenceManagerFactory类必须定义一个静态方法PersistenceManagerFactory getPersistenceManagerFactory(Map props)。类“org.datanucleus.api.jdo.JDOPersistenceManagerFac