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 的问题让我很生气,因为我的应用程序运行良好。

4

3 回答 3

1

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

于 2012-04-14T20:48:30.593 回答
1

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

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

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

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

希望有帮助。

于 2012-04-14T22:07:19.447 回答
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>
于 2013-08-17T13:56:40.027 回答