在 Eclipse 中,我编写了一个用于 Android 的类包,并在一个 android 项目中对其进行了测试,并将测试代码保存在第二个包中。然后我使用命令行从我项目的 bin/classes 目录中的所有 casses 创建一个 jar 文件(仅用于我的库包,而不是测试包)。运行“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 的底部。
一旦我添加了我的 jar,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,而不是从命令行中导出。那也没什么区别。