java可能与proguard有关吗?查询数据存储时出现神秘的“NullPonterException”,其中包含“缺少”类
我正在开发一个简单的应用程序,将数据保存到谷歌应用程序引擎的数据存储中,然后调用数据存储并列出所有实体
虽然我能够将数据存储在数据存储中,但我无法“查询”数据存储
当我尝试构建查询时,会出现以下错误: “java.lang.NullPointerException:没有为此线程注册API环境。”
这发生在这一行,无论我把它放在哪里:
Query query = new Query("myStoredBean");
注意:在调用上述代码行之前,我会验证数据存储连接是否打开且有效
此外,除了nullpointerexception之外,我的logcat还报告了一些奇怪的问题,我不知道如何解决它们:
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/appengine/repackaged/com/google/io/protocol/ProtocolMessage;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Unable to resolve superclass of Lcom/google/apphosting/api/DatastorePb$Transaction; (2168)
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/apphosting/api/DatastorePb$Transaction;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule E/dalvikvm﹕ Could not find class 'com.google.apphosting.api.DatastorePb$Transaction', referenced from method com.google.appengine.api.datastore.BaseDatastoreServiceImpl.a
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ VFY: unable to resolve new-instance 2597 (Lcom/google/apphosting/api/DatastorePb$Transaction;) in Lcom/google/appengine/api/datastore/BaseDatastoreServiceImpl;
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/appengine/repackaged/com/google/io/protocol/ProtocolMessage;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Unable to resolve superclass of Lcom/google/apphosting/api/DatastorePb$Transaction; (2168)
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/apphosting/api/DatastorePb$Transaction;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/appengine/repackaged/com/google/io/protocol/ProtocolMessage;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Unable to resolve superclass of Lcom/google/apphosting/api/DatastorePb$PutRequest; (2168)
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/apphosting/api/DatastorePb$PutRequest;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule E/dalvikvm﹕ Could not find class 'com.google.apphosting.api.DatastorePb$PutRequest', referenced from method com.google.appengine.api.datastore.AsyncDatastoreServiceImpl.a
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ VFY: unable to resolve new-instance 2568 (Lcom/google/apphosting/api/DatastorePb$PutRequest;) in Lcom/google/appengine/api/datastore/AsyncDatastoreServiceImpl;
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/appengine/repackaged/com/google/io/protocol/ProtocolMessage;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Unable to resolve superclass of Lcom/google/apphosting/api/DatastorePb$PutRequest; (2168)
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/apphosting/api/DatastorePb$PutRequest;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/appengine/repackaged/com/google/io/protocol/ProtocolMessage;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/google/appengine/repackaged/com/google/io/protocol/ProtocolMessage;)
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/appengine/repackaged/com/google/io/protocol/ProtocolMessage;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Unable to resolve superclass of Lcom/google/apphosting/api/DatastorePb$DeleteRequest; (2168)
10-01 18:11:38.884 32537-32537/com.myApp.MyModule W/dalvikvm﹕ Link of class 'Lcom/google/apphosting/api/DatastorePb$DeleteRequest;' failed
10-01 18:11:38.884 32537-32537/com.myApp.MyModule E/dalvikvm﹕ Could not find class 'com.google.apphosting.api.DatastorePb$DeleteRequest', referenced from method com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$1.a
你知道怎么解决这个问题吗?我正在使用安卓 studio和最新的应用程序引擎API
此外,我还有一个核心应用程序中断错误,出现在上述错误之后,引用的行是在我初始化“Query”对象时出现的:
10-03 10:25:17.844 16385-16385/com.myapp.myModule E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.myapp.myModule, PID: 16385
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.myModule/com.myapp.myModule.MainActivityWithSwipeableTabs}: java.lang.NullPointerException
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2641)
at 安卓.app.ActivityThread.access$800(ActivityThread.java:156)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:157)
at 安卓.app.ActivityThread.main(ActivityThread.java:5867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:674)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.myapp.myModule.MainActivityWithSwipeableTabs.onCreate(SourceFile:66)
at 安卓.app.Activity.performCreate(Activity.java:5312)
at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2541)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2641)
at 安卓.app.ActivityThread.access$800(ActivityThread.java:156)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:157)
at 安卓.app.ActivityThread.main(ActivityThread.java:5867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:674)
at dalvik.system.NativeStart.main(Native Method)
我还试图找到安卓 studio的“订购和导出”功能,我相信它现在基本上位于项目结构部分。我不知道里面有什么会影响这个错误
# 1 楼答案
我曾经有过这样一个应用程序。下面是我的端点类中用于查询数据存储的API方法
我用这段代码从AsyncTask调用了这个方法
# 2 楼答案
根据this discussion
You MUST run the application as a Web Application to be able to activate the App Engine environment with the Datastore that you need for JDO.
你能试试看它是否有效吗