将Jar导入Android项目时出错

时间:2012-04-14 20:43:39

标签: android dex

这是Android新SDK的最新问题。

现在Android SDK在将外部jar导入apk包时使用ANT约定,外部jar必须位于“lib”文件夹中,SDK将从该文件夹导出jar。

我的问题是,当我添加我的罐子并运行我的项目时,我收到此消息:

  

处理“javax / transaction / HeuristicCommitException.class”的麻烦:

     

错误使用或错误使用核心类(java。*或javax。*)时   没有建立核心库。

     

这通常是由于无意中包含了一个核心库文件   应用程序的项目,使用IDE(例如Eclipse)时。如果   你确定你不是故意定义一个核心类,那么这个   是最有可能解释发生了什么。

     

但是,您实际上可能正在尝试在核心中定义类   命名空间,例如,来自a的源代码   非Android虚拟机项目。这肯定不会   工作。它至少会危害您的应用与您的兼容性   该平台的未来版本。它也常常值得怀疑   合法性。

     

如果你真的打算建立一个核心库 - 这只是   适合作为创建完整虚拟机分发的一部分,   而不是编译应用程序 - 然后使用   “--core-library”选项可以禁止显示此错误消息。

     

如果你继续使用“--core-library”但实际上正在构建一个   应用程序,然后预先警告您的应用程序仍将失败   在某些时候建立或运行。请为愤怒的顾客做好准备   例如,谁发现你的申请不再运作一次   他们升级他们的操作系统。你应该为此负责   问题

     

如果您合法地使用恰好位于核心中的某些代码   包装,那么最简单的安全替代方案就是重新包装   那段代码。也就是说,将有问题的类移动到您自己的包中   命名空间。这意味着它们永远不会与核心发生冲突   系统类。 JarJar是一个可以帮助您完成这项工作的工具。   如果你发现你不能这样做,那就表明了这一点   你所走的道路最终将导致痛苦,痛苦,悲伤,   和悲伤。

我在这里和其他论坛上已经阅读过此消息,有些人说Android.jar是问题所以删除会修复它。

但是我找不到Android.jar,除了Android librar之外无法删除。

关于将android导入库的问题让我很生气,因为我的应用程序工作得非常好。

3 个答案:

答案 0 :(得分:1)

一旦尝试清理你的项目并再次构建它......它可能对你有帮助......因为它对我有帮助......我的新sdk也有同样的问题......

答案 1 :(得分:1)

我第一次更新时看到了很多问题,但最终能够让它运转起来。一些建议,基于最终对我和朋友有用的东西:

确保将外部jar放在项目基目录的“libs”文件夹中(注意这里的“s” - 而不是“lib”)。如果进行任何更改,请务必刷新项目并清理(如果未设置为自动构建,则重建)。

在Java Build Path>下的项目属性中; Libraries选项卡,删除除Android X.X.X和Android Dependencies节点之外的所有内容。再次,如果您进行任何更改,请务必刷新项目并清理(如果未设置为自动构建,则重建)。

如果您已为项目及其在工作区中使用的所有库项目执行此操作但仍有问题,请尝试删除所有Android库项目(来自项目属性> Android)以及Java Build中的所有库路径(包括Android XXX和Android依赖此次)从每个,干净,然后更改Android版本/应用/更改它以强制重建。 (对于从基础库项目开始的每个项目执行此操作,只有在构建时没有错误才将其添加到其他项目中。)

希望有所帮助。

答案 2 :(得分: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>