Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Android应用程序,Maven和Eclipse开发库的NoClassDefFoundError大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个 Android库( SiriRestClient),其工件通过Maven进行管理,我正在使用Eclipse进行开发.我将工件打包为JAR文件,因为我在项目中没有任何资产,只有java类,而且有 issues packaging artifacts as apklibs with Eclipse/Maven/ADT.

我还在开发依赖于SiriRestClient库的Android用户界面应用程序(SiriRestClientUI).我通过Maven管理对SiriRestClient库的依赖.

两个项目都在Eclipse中独立构建和部署.

问题:

由于我开始通过Maven管理SiriRestClient库对SiriRestClient库的依赖,如果我在Eclipse中同时打开了库项目和SiriRestClientUI,当我尝试将SiriRestClientUI应用程序部署到设备时,我得到NoClassDefFoundError.

例如:

11-01 16:11:52.288: E/AndroidRuntime(9409): java.lang.NoClassDefFoundError: edu.usf.cutr.siri.android.client.config.SiriJacksonConfig
11-01 16:11:52.288: E/AndroidRuntime(9409):     at edu.usf.cutr.siri.android.ui.MainActivity.onCreate(MainActivity.java:100)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.app.Activity.performCreate(Activity.java:4470)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1053)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.app.ActivityThread.access$600(ActivityThread.java:128)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1161)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.os.Handler.dispatchmessage(Handler.java:99)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.os.Looper.loop(Looper.java:137)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at android.app.ActivityThread.main(ActivityThread.java:4514)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at java.lang.reflect.Method.invokeNative(Native Method)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at java.lang.reflect.Method.invoke(Method.java:511)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
11-01 16:11:52.288: E/AndroidRuntime(9409):     at dalvik.system.NativeStart.main(Native Method)`

这是图书馆和应用程序同步开发过程中的一个主要烦恼,因为我发现的唯一解决方法是编辑库代码,构建库项目,关闭库项目,然后执行SiriRestClientUI应用程序.

我认为问题源于Eclipse / Maven在库项目打开时如何处理Maven依赖项.

这是一个Eclipse屏幕截图,显示了SiriRestClientUI项目,当库项目(SiriRestClient,它上面)被CLOSED时:

您可以在我的本地Maven存储库中找到“Maven Depedencies”下的sirirestclient-1.0.0-SNAPSHOT.jar文件,这就是我想要的.在这种配置下,一切正常.

但是,当我打开SiriRestClient库项目时,我的“Maven Depedencies”条目发生了变化,JAR文件消失了,而是显示了项目的文件夹:

如果我在两个项目打开时尝试启动SiriRestClientUI,那么我得到NoClassDefFoundError.因此,似乎Eclipse正在重定向项目构建,并且不包含库类.

问题:

如何配置Eclipse / Maven以使其始终依赖于本地Maven存储库中的JAR文件,而不是将Maven依赖项切换到本地项目?

或者,有没有另一种方法来摆脱这种配置的NoClassDefFoundError?

库项目的pom.xml文件here.

SiriRestClientUI应用程序项目的pom.xml文件here.

解决方法

试试这个:右键点击项目 – >属性 – > Maven – >取消选中从Workspace项目中解析依赖项.

大佬总结

以上是大佬教程为你收集整理的使用Android应用程序,Maven和Eclipse开发库的NoClassDefFoundError全部内容,希望文章能够帮你解决使用Android应用程序,Maven和Eclipse开发库的NoClassDefFoundError所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。