我正在尝试编写Android类库项目。起初我试图引用该项目,但得到ClassDefNotFound错误。所以我做的是从我的库项目输出中获取JAR文件并将其放入我的项目中。现在我没有找到没有找到的课程,但我收到一个错误,它无法找到资源(该库有字符串,样式,动画......)。
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 :(得分:1)
我认为这背后的问题是,您只是将库jar放在lib
文件夹中,而不是附加到BuildPath
。
试试这个
右键单击您附加的jar。
转到BuildPath,
点击添加到BuildPath。
希望这有帮助
答案 1 :(得分:1)
我认为您的Android Menifests文件包名称不正确, 只需检查您的包名与清单文件包名称的条目相同。
重建您的项目。并清理它。
重新启动IDE
答案 2 :(得分:0)
特别是对于Eclipse,您需要将库添加到当前工作空间然后引用它。请参阅此参考链接:[1]
要从单独的模块获取Android应用程序的资源,您需要在 outputs / build / aar 文件夹中获取已编译的.aar文件。将它放在libs文件夹中,然后通过执行以下操作引用它:[2]
1)将以下内容添加到build.gradle中的存储库块中,使其看起来像这样:
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
2)您现在在依赖项中引用它!:
dependencies {
compile 'com.kevinpelgrims.library:library:1.0.0@aar'
}
[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/