【问题标题】:Ill-advised or mistaken usage of a core class (java.* or javax.*) when not building a core library不构建核心库时对核心类(java.* 或 javax.*)的不明智或错误使用
【发布时间】:2011-10-05 12:51:11
【问题描述】:

当我清理我的项目时,我收到以下错误:

[2011-10-05 13:47:53 - The Basics] Dx 
trouble processing "java/nio/CharBuffer.class":

Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.

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

但是,您实际上可能正在尝试在核心中定义一个类 命名空间,您可能已获取的来源,例如, 来自非 Android 虚拟机项目。这将最 肯定不行。至少会危及 您的应用程序与平台未来版本的兼容性。 它的合法性也经常受到质疑。

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

如果您继续使用“--core-library”但实际上 构建应用程序,然后预先警告您的应用程序 在某些时候仍然无法构建或运行。请成为 为愤怒的客户做好准备,例如,他们发现您的 应用程序一旦升级其操作就停止运行 系统。你会为这个问题负责。

如果您合法地使用了一些恰好位于 核心包,那么您拥有的最简单安全的替代方案是 重新打包该代码。也就是说,将有问题的类移动到 你自己的包命名空间。这意味着他们永远不会在 与核心系统类冲突。 JarJar 是一个可以提供帮助的工具 你在这方面的努力。如果你发现你无法做到这一点,那么 这表明你所走的道路最终会 导致痛苦、痛苦、悲伤和悲叹。

[2011-10-05 13:47:53 - The Basics] Dx 1 error; aborting
[2011-10-05 13:47:53 - The Basics] Conversion to Dalvik format failed with error 1

【问题讨论】:

    标签: dalvik


    【解决方案1】:

    我遇到了这个问题。我使用 Maven 来构建我的 android 项目。我的问题是由我的依赖项之一引起的,具体取决于 android jar。我更新了我的 pom 以从该依赖项中排除 android 并为我解决了它。

      <dependency>
            <groupId>org.reassembler</groupId>
            <artifactId>synth-android</artifactId>
            <version>2.5.8</version>
            <exclusions>
                <exclusion>
                    <artifactId>junit</artifactId>
                    <groupId>junit</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>android</artifactId>
                    <groupId>android</groupId>
                </exclusion>
            </exclusions>
        </dependency>
    

    希望这对某人有所帮助,我花了一段时间才弄清楚发生了什么。

    【讨论】:

    • 感谢您的回答... JUnit 是导致我出错的原因。
    【解决方案2】:

    为了任何可能偶然发现此问题的人的利益,此问题可能是由包含较旧的库(例如 android.jar)引起的。从构建路径中删除.jar 文件将允许您进行编译。否则,您可以使用错误消息中提到的“jarjar”将.jar 文件移动到另一个包中。

    【讨论】:

    • 简而言之,这是正确的。不过,您可能需要采取一些额外的步骤。赞成! :)
    【解决方案3】:

    您的 IDE 配置错误。确保您的脚本或 IDE 没有将 rt.jarandroid.jar 传递给 dx

    【讨论】:

      【解决方案4】:

      在 Android Studio 中,我在 lib 文件夹中包含了 java 和 javax jar 文件,并且存在与它们相关的依赖项(在应用程序级别的 build.gradle 中)。我把它们注释掉了。

      //compile files('libs/  K  java-rt-jar-stubs-1.5.0.jar')
      //compile 'javax.annotation:jsr250-api:1.0'
      //compile files('libs/javax. annotation.jar')
      

      然后我转到项目视图并删除了 jar 文件。有一些 java.awt.geom 的遗留实例我不得不清除,但重建了项目,然后我就没事了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 2013-08-18
        • 1970-01-01
        • 2017-04-04
        • 1970-01-01
        • 2010-10-24
        相关资源
        最近更新 更多