导入Jar包到Android项目出错

7
这是与Android新SDK相关的最近问题。
现在,Android SDK在将外部jar导入apk包时使用ANT约定,外部jar必须位于“lib”文件夹中,SDK将从该文件夹导出jar。
我的问题是当我添加我的jar并运行我的项目时,我收到以下消息:
处理“javax/transaction/HeuristicCommitException.class”的问题: 在不构建核心库时误用或错误地使用核心类(java.*或javax.*)。
这通常是由于在使用IDE(例如Eclipse)时无意中包含核心库文件在应用程序项目中。如果您确定您没有故意定义核心类,则这是发生的最可能的解释。
但是,您实际上可能正在尝试在核心命名空间中定义一个类,其源代码可能来自非Android虚拟机项目。这肯定不会起作用。至少,它会危及您的应用程序与平台未来版本的兼容性。这也经常存在法律问题。
如果您确实打算构建核心库-这仅适用于创建完整虚拟机分发而不是编译应用程序-则使用“--core-library”选项来抑制此错误消息。
如果您继续使用“--core-library”,但实际上正在构建应用程序,请注意,您的应用程序仍将在某个时候无法构建或运行。请准备好愤怒的客户,例如,一旦他们升级其操作系统,您的应用程序将停止运行。您将对此问题负责。
如果您合法地使用某些代码,这些代码恰好位于核心包中,则您拥有的最简单的安全替代方案是重新打包该代码。也就是说,将相关的类移动到自己的包命名空间中。 JarJar是可能会帮助您完成此任务的工具。如果您发现无法执行此操作,则表明您正在走的道路最终将导致痛苦、苦难、悲伤和哀叹。
我已经在这里和其他论坛上阅读了有关此消息的信息,有些人说Android.jar是问题所在,因此删除它即可解决问题。
但我找不到那个Android.jar,除了不能删除的Android库。
导入库到Android的这个问题让我发疯,因为我的应用程序一直非常好用。
3个回答

1

尝试清理项目并重新构建它...这可能会对你有所帮助...因为它对我有帮助...我在使用新的SDK时也遇到了同样的问题...


1

我在第一次更新时也遇到了很多问题,但最终还是成功解决了。以下是一些建议,基于最终对我和我的朋友有效的方法:

确保你的外部 jar 包在项目的基本目录下有一个 "libs" 文件夹(注意这里是 "s",而不是 "lib")。如果你进行了任何更改,请确保刷新项目并清理(如果没有设置自动构建,则重新构建)。

在项目属性中的 Java Build Path > Libraries 选项卡下,删除除 Android X.X.X 和 Android Dependencies 节点以外的所有内容。同样,如果你进行了任何更改,请确保刷新项目并清理(如果没有设置自动构建,则重新构建)。

如果你已经为你的项目和工作区中使用的所有库项目执行了上述操作,但仍然遇到问题,请尝试从每个项目的属性 > Android 中删除所有 Android 库项目,以及从 Java Build Path 中删除所有库(包括这次的 Android X.X.X 和 Android dependencies),然后清理并更改 Android 版本/应用/再更改以强制重新构建。(从你的基本库项目开始,为每个项目执行此操作,只有当它们无错误地构建时才将它们添加到其他项目中)。

希望这可以帮助到你。


谢谢 :) 我终于解决了问题!! 只需删除 Android SDK 中包含的一些 jar 包即可。 - Rafael Carrillo
这个可行。另一种(更激进的)方法是备份库并删除其中的所有内容,然后逐个重新引入文件。 - kakoma

0

我在使用Maven构建一个测试项目时遇到了这个错误,但我通过添加以下内容解决了它:

<scope>provided</scope>

到 Android 测试库。

    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android-test</artifactId>
        <version>4.1.1.4</version>
        <scope>provided</scope>
    </dependency>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接