>基于maven的库项目,生成.jar文件.该项目包含我们的核心代码.
>基于maven的Java桌面应用程序.此应用程序取决于库项目.
>我们刚刚开始构建的Android应用程序.它尚未成熟.
我希望Android应用程序使用库项目作为依赖项.
我已经阅读了一些关于向Android应用程序添加库文件依赖关系的类似问题的回复,我试图遵循它们:
方法#1:
项目 – >属性 – > Java构建路径 – >项目 – >添加和添加库项目.
现在,我可以使用库项目中的类.编译器不会产生任何警告.但是,当我在模拟器上运行应用程序时,我得到一个类未定义的错误.
方法#2:
将生成的.jar文件复制到Android应用程序的“libs”目录中.
这很有效.没有类未定义的异常.但是,我无法附加源代码,因此无法单步执行库代码.另外,每次源更改时,我都必须手动复制.jar文件.
方法#3:
转到库项目的“属性”.您将在左侧窗格中看到“Android”.选择它并标记“IsLibrary”字段.
但是,在我的情况下,左窗格中没有“Android”属性.我想这个属性只有在它是一个真正的Android库项目时才会显示.
我被卡住了.如果有人能告诉我如何最好地处理这种情况,我将不胜感激.
以下是我希望实现的目标摘要:
>也可以在桌面应用程序中使用相同的库项目
作为Android应用程序.
>在Android应用程序上,源代码调试应该有效.
>如果库应用程序中有任何源代码更改,Android应用程序应自动获取新更改(而不是每次尝试将新的.jar文件拖到libs文件夹中).
解决方法
根据经验,如果您正在使用Eclipse,我相信您正在获得该异常,因为您在将其添加到Android项目时未将库检查为已导出 – 在您将其添加到构建路径之后,以下内容:项目道具 – >构建路径 – >订单和导出,这里确保您的库项目被选中.关于此ClassNotFoundException存在已知问题/挫折,解决方法是选择导出选项卡.我相信这篇文章包含more details或this SO topic.
在调试jar代码时,需要在libs文件夹中包含一个与jar文件具有相同命名的属性文件(例如,如果库jar文件是mylib.jar,则需要有一个mylib. jar.properties文件).该文件应该有一个src条目,指向源代码所在的路径(作为jar文件或文件系统).当您添加此文件时,Eclipse有点愚蠢,因此您需要重新启动它.它可以包含一个doc条目,也可以指向javadoc所在的位置.这是我自己的一个例子:
src=../docs/spring-android-rest-template-1.0.1.RELEASE-sources.jar doc=../docs/spring-android-rest-template-1.0.1.RELEASE-javadoc.jar