3

我正在编写一个 Android 应用程序,其中有一些 Java 代码有些复杂,因此很难在 Android 环境中验证其正确性。我想在桌面环境中运行此代码,在该环境中我有更多工具可以检查此代码的输出,同时仍在我的 Android 应用程序中使用它。

我尝试的解决方案是在 Eclipse 中拥有三个不同的项目。我的 Android 项目和两个普通(非 Android)Java 项目。一个 Java 项目包含我想在 Android 中使用的复杂代码,另一个是验证前一个项目正确性的测试程序。后一个项目在调试前一个项目中已经很有用了。

但是,到目前为止,我尝试在我的 Android 项目中使用 Java 项目似乎在 IDE 中工作,但是当我实际运行 Android 应用程序时,每当我尝试访问任何类时都会引发 NoClassDefFoundError 异常。显然,该代码没有被重新编译到 .dex 文件中,但为什么不呢?

我可以详细介绍我到目前为止所做的事情,但我不禁认为我正在做的是一件非常标准和简单的事情,并且有一种简单的方法,即使我找不到任何人都在做我正在尝试的事情。有人可以向我描述这是如何完成的吗?

4

2 回答 2

1

幸运的是,我找到了自己问题的答案,我想我会在这里分享它以帮助处于相同情况的其他人。结果很简单……

我已经在做的事情通常会奏效,这对我来说应该是一个很大的线索,因为我之前实际上已经成功地做到了这一点。您所要做的就是在 Android 项目的Properties > Java Build Path > Projects下,将纯 Java 项目添加到“构建路径上的必需项目”中,然后在Properties > Java Build Path > Order and Export下,选中复选框在“构建类路径顺序和导出条目”列表中的同一个项目,一切都应该正常工作。

在 Eclipse 中,您无需执行任何其他操作即可使此设置正常工作。只有当您从命令行编译时,您才需要构建 Java Jars 并将它们作为库导入,但我还没有这样做(目前)。

最后,这对我不起作用,因为我恰好在 JDK 1.7 合规性下编译我的普通 Java 项目,而我的 Android 项目是在 JDK 1.6 下编译的。这通过控制台窗格上的输出得到验证,报告“ Dx bad class file magic (cafebabe) or version ”。当两个项目在相同的合规级别下编译时,此错误消息就会消失,而且并非巧合的是,Android 程序运行正常。

感谢所有试图提供帮助的人,我希望这个答案对那里的人有所帮助!

于 2012-11-19T04:59:58.393 回答
0

如果你把你的其他纯 java 项目做成一个 Android 项目并用它来监控设备上的输出,它会不起作用吗?

于 2012-11-07T00:25:03.633 回答