2012-07-11 48 views
2

我已經在Eclipse中生成Android項目,並且一切正常。我已經添加了幾個按鈕等事件。現在,我正在嘗試創建Mongo對象,但它會引發錯誤。你有任何解決方案?可以連接這兩個嗎?如何連接MongoDB與Android應用程序

LOG:未在此驅動程序支持

07-11 12:40:17.655: E/AndroidRuntime(724): FATAL EXCEPTION: main 
07-11 12:40:17.655: E/AndroidRuntime(724): java.lang.IllegalStateException: Could not execute method of the activity 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.view.View$1.onClick(View.java:3591) 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.view.View.performClick(View.java:4084) 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.view.View$PerformClick.run(View.java:16966) 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.os.Handler.handleCallback(Handler.java:615) 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.os.Looper.loop(Looper.java:137) 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.app.ActivityThread.main(ActivityThread.java:4745) 
07-11 12:40:17.655: E/AndroidRuntime(724): at java.lang.reflect.Method.invokeNative(Native Method) 
07-11 12:40:17.655: E/AndroidRuntime(724): at java.lang.reflect.Method.invoke(Method.java:511) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
07-11 12:40:17.655: E/AndroidRuntime(724): at dalvik.system.NativeStart.main(Native Method) 
07-11 12:40:17.655: E/AndroidRuntime(724): Caused by: java.lang.reflect.InvocationTargetException 
07-11 12:40:17.655: E/AndroidRuntime(724): at java.lang.reflect.Method.invokeNative(Native Method) 
07-11 12:40:17.655: E/AndroidRuntime(724): at java.lang.reflect.Method.invoke(Method.java:511) 
07-11 12:40:17.655: E/AndroidRuntime(724): at android.view.View$1.onClick(View.java:3586) 
07-11 12:40:17.655: E/AndroidRuntime(724): ... 11 more 
07-11 12:40:17.655: E/AndroidRuntime(724): Caused by: java.lang.NoClassDefFoundError: com.mongodb.DBPortPool 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.mongodb.DBPortPool$Holder.get(DBPortPool.java:58) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.mongodb.DBTCPConnector.setMasterAddress(DBTCPConnector.java:486) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.mongodb.DBTCPConnector.<init>(DBTCPConnector.java:46) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.mongodb.Mongo.<init>(Mongo.java:192) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.mongodb.Mongo.<init>(Mongo.java:176) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.mongodb.Mongo.<init>(Mongo.java:130) 
07-11 12:40:17.655: E/AndroidRuntime(724): at com.example.easyrest.MainActivity.clickAddOfferButton_offer(MainActivity.java:66) 
07-11 12:40:17.655: E/AndroidRuntime(724): ... 14 more 
+1

你得到了什麼類型的錯誤?你能發佈錯誤嗎? – 2012-07-11 12:55:13

+0

我修改了我的帖子 – ruhungry 2012-07-11 12:59:07

+0

java.lang.NoClassDefFoundError表示VM在執行過程中無法加載類com.mongodb.DBPortPool。 – 2012-07-11 13:01:19

回答

4

的Android。 jira有一個公開的問題。

+3

[此問題已修復](https://jira.mongodb.org/browse/JAVA-295)。 ;] – Anonsage 2013-12-07 07:30:05

3

我知道這是一箇舊帖子,但我只是想分享我的Android + MongoDB驅動程序體驗。

首先要做的事情是IT WORKS!

事實證明,parvin提到的問題已得到修復和關閉。然而,當你使用最近的版本(寫作時的2.11.3)時,你會發現一個非常可怕的錯誤是自我呈現,但不用擔心 - 驅動程序無論如何都可以工作。至少我能夠驗證並插入數據。

的錯誤,你會看到如下所示:

I/dalvikvm(17945): Could not find method java.lang.management.ManagementFactory.getRuntimeMXBean, referenced from method org.bson.types.ObjectId.<clinit> 
W/dalvikvm(17945): VFY: unable to resolve static method 7096: Ljava/lang/management/ManagementFactory;.getRuntimeMXBean()Ljava/lang/management/RuntimeMXBean; 
D/dalvikvm(17945): VFY: replacing opcode 0x71 at 0x0071 
I/dalvikvm(17945): Could not find method java.lang.management.ManagementFactory.getPlatformMBeanServer, referenced from method com.mongodb.util.management.jmx.JMXMBeanServer.<init> 
W/dalvikvm(17945): VFY: unable to resolve static method 7095: Ljava/lang/management/ManagementFactory;.getPlatformMBeanServer()Ljavax/management/MBeanServer; 
D/dalvikvm(17945): VFY: replacing opcode 0x71 at 0x0003 
E/dalvikvm(17945): Could not find class 'javax.management.ObjectName', referenced from method com.mongodb.util.management.jmx.JMXMBeanServer.createObjectName 
... etc. more scary stuff ... 

而且我工作的代碼如下所示:

MongoClient mongo = new MongoClient(ip, port); 
DB db = mongo.getDB("myDatabase"); 
boolean auth = db.authenticate(username, password); 
if (auth) 
{ 
    DBCollection collection = db.getCollection("myCollection"); 
    DBObject jsonData = (DBObject) JSON.parse(jsonString); 
    collection.insert(jsonData); 
} 

我希望這可以幫助別人,因爲我是有關該錯誤很困惑。

+0

我實際上發現它很難找到最新的mongo-java jar。三個不同的MongoDB站點顯示三個不同的當前版本。但是,這裏是我找到2.11.3的地方:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/2.11.3/ – Anonsage 2013-12-07 00:08:44

相關問題