2016-08-24 111 views
2

我爲.jar創建了一個綁定,並且它在測試分支中正常工作,但在移動時與我們的生產分支相同的.jar綁定引發以下錯誤。Java.Lang.ClassNotFoundException:在路徑中找不到類「com.site24x7.android.apm.Apm」:DexPathList

拋出java.lang.ClassNotFoundException:未找到路徑類 「com.site24x7.android.apm.Apm」 :DexPathList [zip文件「/data/app/com.mycomany.myappname-1。 APK「], nativeLibraryDirectories = [/數據/ APP-LIB/com.mycompany.myappname-1, /供應商/ lib中,/系統/ lib中]]

我發現

java.lang.ClassNotFoundException: Didn't find class on path: dexpathlist

,但我在Visual Studio或Xamarin Studio中看不到任何地方選擇Java Build Path並按照這些說明操作。

+0

如果你把你的'classes.dex'文件甘德並搜索「APM」,你發現了什麼?我不會懷疑。因此它沒有被放在主要的dex列表中。嘗試添加一個'[Register]'屬性以確保:https://developer.xamarin.com/api/type/Android.Runtime.RegisterAttribute/如果這樣做不起作用,請確保您嵌入您的JAR,使其成爲嵌入式。 –

回答

2

您需要確保您的綁定Jar能夠嵌入到.apk中。您可以在我們的疑難解答頁面上找到類似的錯誤:

https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/troubleshooting-bindings/#Problem_NoClassDefFoundError_in_packaging

java.lang.NoClassDefFoundError is thrown in the packaging step.

可能的原因:

這一錯誤的最可能的原因是,強制性的Java庫必須添加到應用程序項目(.csproj)中。 .JAR文件不會自動解析。 Java庫綁定並不總是針對目標設備或模擬器中不存在的用戶程序集(例如Google Maps maps.jar)生成。 Android Library項目支持並非如此,因爲庫.JAR嵌入在庫dll中。例如:https://bugzilla.xamarin.com/show_bug.cgi?id=4288

您可以在這裏Embedded vs Non-Embedded找到一張小紙條:

https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb#embedded-vs-non-embedded

0

我更改爲EmbeddedJar而不是InputJar,現在它工作正常。 Xamarins網站上的文檔沒有說它必須是嵌入式的,綁定項目默認爲Input,但是InputJar導致了dexpath問題。

相關問題