2015-05-30 94 views
0

我正在嘗試編寫一個Android類庫項目。起初我試圖引用該項目,但得到ClassDefNotFound錯誤。所以我所做的就是從我的庫項目輸出中取出JAR文件並放入我的項目中。現在我沒有找到沒有找到的類,但我得到一個錯誤,它找不到資源(該庫有字符串,樣式,動畫...)。JAR中的Android庫資源

05-30 02:27:00.255: E/AndroidRuntime(2083): java.lang.NoClassDefFoundError: com.mycompany.popupdialog.R$style 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at com.mycompany.popupdialog.Popupdialog.<init>(SweetAlertDialog.java:75) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at com.mycompany.popupdialog.Popupdialog.<init>(SweetAlertDialog.java:71) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at com.mycompany.androidApplication.MainActivity$2.onClick(MainActivity.java:156) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at android.view.View.performClick(View.java:4240) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at android.view.View$PerformClick.run(View.java:17721) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at android.os.Handler.handleCallback(Handler.java:730) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at android.os.Looper.loop(Looper.java:137) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at java.lang.reflect.Method.invoke(Method.java:525) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
05-30 02:27:00.255: E/AndroidRuntime(2083):  at dalvik.system.NativeStart.main(Native Method) 

如何在JAR文件中獲得所需的所有資源,而無需將它們包含在託管項目中?

在引用某個項目的情況下 - 我嘗試了所有我在網上找到的有關清理項目的內容,將項目設置爲訂購&導出屏幕 - 沒有任何幫助。

+0

請添加您的罐子到構建路徑 – ravi

+0

@ravi這樣做,(如上所述其添加到日食訂單和出口) – developer82

回答

1

我認爲這背後的問題是,你只是把你的庫jar放到你的lib文件夾中,但不能附加到BuildPath

試試這個

罐子上右鍵點擊已經連接。

goto BuildPath,

點擊添加到BuildPath。

希望這有助於

+0

Thianks。正如我在文章中提到的 - 已經嘗試過。 – developer82

0

專門針對Eclipse的,你需要的庫添加到當前的工作空間,然後引用它。看到這個參考鏈接:[1]


爲了從單獨的模塊,您將需要獲取編譯.aar文件在您輸出/建設/ AAR文件夾中的Android應用程序讓你的資源。把它塞進你的庫文件夾,然後通過執行以下操作參考吧:[2]

1)以下添加到您的庫塊的build.gradle所以它看起來是這樣的:

repositories { 
    mavenCentral() 
    flatDir { 
     dirs 'libs' 
    } 
} 

2)您現在引用它在你的依賴!:

dependencies { 
    compile 'com.kevinpelgrims.library:library:[email protected]' 
} 

[1] http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

[2] http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project/

+0

我沒有使用maven。我正在使用eclipse。而我所有的項目都是在本地建造的。 – developer82

+2

在這種情況下,您可能需要將庫導入到同一個工作區,然後添加對其的引用,請參閱:http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject – asu

+0

謝謝!有效!希望我可以將其標記爲已接受的答案。 – developer82

1
  1. 我覺得你的Android Menifests文件包名稱是不正確的,只是 它檢查你的包名稱相同menifest文件包名的條目。

  2. 重建您的項目。並清理它。

  3. 重新啓動IDE