2015-09-16 103 views
0

我正嘗試將Azure連接到Android Studios。我遵循了關於Azure的教程並創建了移動服務。然後它給了我一些代碼添加到我的應用程序,以便他們連接。但是,代碼拋出了一個我無法弄清楚的異常。我從頭到腳搜索了互聯網,找不到答案。我認爲它與依賴或導入庫的方式有關(通過將jar文件粘貼到libs文件夾並添加依賴關係)。將Azure連接到Android Studios

代碼拋出導致異常(由天青提供):

try { 
     mClient = new MobileServiceClient(
       "https://atm.azure-mobile.net/", 
       "JWjetFMUVaAXzHmqDVqhkkRhTGGjeW70", 
       this 
     ); 
     Item item = new Item(); 
     item.Text = "Awesome item"; 
     mClient.getTable(Item.class).insert(item, new TableOperationCallback<Item>() { 
      public void onCompleted(Item entity, Exception exception, ServiceFilterResponse response) { 
       if (exception == null) { 
        // Insert succeeded 
        Toast.makeText(context, "WOOHOO", Toast.LENGTH_LONG).show(); 
       } else { 
        // Insert failed 
        Toast.makeText(context, "FAILED", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 
    catch(MalformedURLException d) { 
    } 

例外:

java.lang.NoClassDefFoundError: com.google.gson.GsonBuilder 
     at com.microsoft.windowsazure.mobileservices.MobileServiceClient.createMobileServiceGsonBuilder(MobileServiceClient.java:192) 
     at com.microsoft.windowsazure.mobileservices.MobileServiceClient.<init>(MobileServiceClient.java:179) 
     at com.microsoft.windowsazure.mobileservices.MobileServiceClient.<init>(MobileServiceClient.java:158) 
     at com.atmlocator.hooper.kenneth.atmlocator.HomeActivity.onCreate(HomeActivity.java:218) 
     at android.app.Activity.performCreate(Activity.java:5047) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2051) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2112) 
     at android.app.ActivityThread.access$700(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1223) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4917) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:997) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764) 
     at dalvik.system.NativeStart.main(Native Method) 

回答

1

我已經通過更新.jar文件解決了這個問題。儘管Microsoft文檔告訴我要獲得:

'gson:2.2.2' 

此版本不起作用。相反,我下載了一個新版本:

'gson:2.3.1' 

此.jar文件解決了問題

1

按我的經驗,爲例外 「的NoClassDefFoundError」 是指你的項目缺少依賴庫JAR文件。在這裏,你的項目會錯過gson.jar文件。

您可以從頁面https://azure.microsoft.com/en-us/downloads/的「移動」 - >「Android安裝」部分下載zip文件「azuresdk-android-2.0.3.zip」。將zip文件解壓縮到目錄後,可以在「azuresdk-android-2.0.3/mobileservices」目錄中找到「gson-2.2.2.jar」文件和其他依賴關係jar文件。

然後,您可以將這些jar庫文件導入到項目的目錄「libs」中以解決問題。請參閱SO線程Android Studio - Importing external Library/Jar以瞭解如何導入外部庫/ jar。

最好的問候。

+0

謝謝您的回答@Peter,但我已經完成了這些步驟。 「gson-2.2.2.jar」文件已經包含在內,但在編譯時似乎沒有被識別。有任何想法嗎? 這是.jar我已經包含compile'c​​om.google.code.gson:gson:2.2.2' – semiColon

+0

@semiColon IDEA官方幫助手冊可以幫助您解決它https://www.jetbrains.com/idea /help/configuring-module-dependencies-and-libraries.html#d1552849e216 –