在Eclipse中,我编写了一个用于Android的类包,并在一个android项目中测试它们,将测试代码保存在第二个包中。然后我使用命令行从我项目的bin / classes目录中的所有casses创建一个jar文件(仅适用于我的库包,而不是测试包).Running" jar tf"显示所有正确添加了我的包名称的类。
然后我创建了另一个Android项目,其中包含导入我的第一个包并使用这些方法的活动,如下所示:
import uk.me.stevewaring.nestedsettings.NestedSettingsCommon;
import uk.me.stevewaring.nestedsettings.NestedSettingsReformat;
public class ShowNestedSettings extends Activity implements NestedSettingsReformat
{...
然后我右键单击我的新项目并使用Build Path添加我的jar。我的jar显示在Libraries下的java构建路径的顶部,以及Order和Export下的底部。
一旦我添加了我的罐子,所有来自lint的红色波浪线抱怨我包装中的方法消失了。
然而,当我尝试调试我的项目时,在LogCat
我得到了:
04-27 05:45:44.180: I/dalvikvm(14576): Failed resolving Lcom/example/shownestedsettings/ShowNestedSettings; interface 553 'Luk/me/stevewaring/nestedsettings/NestedSettingsReformat;'
04-27 05:45:44.210: W/dalvikvm(14576): Link of class 'Lcom/example/shownestedsettings/ShowNestedSettings;' failed
然后运行失败,因为要运行的类不存在。
当我构建原始项目时,我没有勾选方框" Mark this project as a library
",这可能是问题所在吗?我不确定该复选框有什么影响。如果这是问题,有没有办法回顾性地应用该操作,或者我必须创建一个完整的新项目并将我的包复制到其中,然后再使用它创建一个jar。如果那不是问题,那么我做错了什么?
更多信息: 我删除了接口的实现,然后当我尝试调试时,我收到了这个:
04-27 05:52:10.919: I/dalvikvm(14677): Could not find method uk.me.stevewaring.nestedsettings.NestedSettingsCommon.initialise, referenced from method com.example.shownestedsettings.ShowNestedSettings.onCreate
04-27 05:52:10.949: W/dalvikvm(14677): VFY: unable to resolve static method 3566: Luk/me/stevewaring/nestedsettings/NestedSettingsCommon;.initialise (Landroid/app/Activity;)V
04-27 05:52:10.949: D/dalvikvm(14677): VFY: replacing opcode 0x71 at 0x0003
这并不让我感到惊讶,NestedSettingsCommon.initialise是我的活动第一次调用我的Jar中的代码。
我也尝试从Eclipse中导出Jar而不是从命令行创建它。这没有任何区别。
答案 0 :(得分:15)
确保将JAR设置为与应用程序一起导出:
项目>属性> Java构建路径>订单和出口