Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PersistenceManagerFactory类必须定义静态方法吗?_Java_Android_Google App Engine_Datanucleus - Fatal编程技术网

Java PersistenceManagerFactory类必须定义静态方法吗?

Java PersistenceManagerFactory类必须定义静态方法吗?,java,android,google-app-engine,datanucleus,Java,Android,Google App Engine,Datanucleus,我正在尝试将我的android应用程序连接到我的后端端点(在谷歌的应用程序引擎中),这样我就可以将我的java对象存储在谷歌的数据存储中。但是,当我尝试初始化PersistenceManagerFactory对象时,我在本文末尾看到了一个错误-PersistenceManagerFactory类必须定义一个静态方法 我尝试使用以下代码初始化对象,注意:我在类路径中有库 public static PersistenceManagerFactory InitializePersistanceMan

我正在尝试将我的android应用程序连接到我的后端端点(在谷歌的应用程序引擎中),这样我就可以将我的java对象存储在谷歌的数据存储中。但是,当我尝试初始化
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