未知错误:无法构建:文件dx.jar未从SDK文件夹中加载

34

当我在Eclipse ADT上尝试运行我的Android项目时,在控制台中看到了这个:

[2017-03-24 15:34:41 - Dex Loader] Failed to load C:\Users\jaimemontoya\android-sdks\build-tools\26.0.0-preview\lib\dx.jar

[2017-03-24 15:34:41 - CouponClub] 未知错误:无法构建:文件dx.jar未从SDK文件夹中加载!

输入图像描述

我正在使用Eclipse Neon.2 Release (4.6.2):

输入图像描述

这是我在Android SDK管理器中看到的软件包配置:

输入图像描述

我理解这个错误的含义是,它无法加载dx.jar,因为它试图从“SDK文件夹”中加载它。消息甚至使用惊叹号来表示!它所指的SDK文件夹是什么?在这种情况下,“C:\Users\jaimemontoya\android-sdks”应该被视为SDK文件夹。您知道它指望在哪里找到“dx.jar”文件吗?


1
如果您查看我在问题中包含的最后一个截图,它会说:“SDK路径:C:\ Users \ jaimemontoya \ android-sdks”。因此,C:\ Users \ jaimemontoya \ android-sdks绝对是我的SDK文件夹。它到底在哪里尝试找到dx.jar文件?C:\ Users \ jaimemontoya \ android-sdks \ dx.jar对我来说没有意义,但我也尝试了它,显然它也不起作用。 - Jaime Montoya
1
如果我将我的文件夹重命名为C:\ Users \ jaimemontoya \ android-sdks \ build-tools \ 26.0.0-preview \ lib2222222 \ dx.jar而不是C:\ Users \ jaimemontoya \ android-sdks \ build-tools \ 26.0.0-preview \ lib \ dx.jar,我会看到相同的错误消息:“[2017-03-24 16:30:03 - CouponClub]未知错误:无法构建:文件dx.jar未从SDK文件夹中加载!”所以它无法加载C:\ Users \ jaimemontoya \ android-sdks \ build-tools \ 26.0.0-preview \ lib \ dx.jar,但我想知道原因。 - Jaime Montoya
1
它似乎在这里查找:C:\Users\jaimemontoya\android-sdks\build-tools\26.0.0-preview\lib\dx.jar。我正在努力弄清楚为什么它无法加载它。 - Jaime Montoya
1
可能是Android ADT错误,dx.jar未从SDK文件夹加载的重复问题。 - laffuste
16个回答

29

没有任何答案能帮助我,只有我的决定解决了这种情况:

解决方案是复制。

android-sdk/build-tools/25.0.3/lib

到文件夹中

android-sdk/build-tools/26.0.1/lib

现在一切运作良好!


1
我也在使用Android Studio进行其他项目。那些项目会有问题吗?我的意思是,改动这些文件不会有问题吗? - Ton
这没有帮助到我。 - Ishara Amarasekera

19
Eclipse ADT已不再受支持。因此,Google删除了dx.jar中的两个类来打破向后兼容性。 您可以轻松解决它。
  1. 转到sdk文件夹。从最新的build-tools中导航到dx.jar。 例如:build-tools\28.0.3\lib
  2. 在任何zip压缩程序中打开dx.jar。 我使用WinRAR。
  3. 在归档中导航到路径com\android\dx\command。 这里你看不到DxConsole$1.class和DxConsole.class文件。
  4. 现在导航到25.0.3或之前的dx.jar。
  5. 再次导航到此存档中的com\android\dx\command。 这里你可以看到DxConsole$1.class和DxConsole.class文件。
  6. 将其从旧的dx.jar复制到新的dx.jar中。我只是从一个WinRAR窗口拖放它。
一切就绪。现在您可以使用带有Eclipse ADT的新dx.jar。 与替换dx.jar相比,此解决方案更好,因为您可以使用新版本的dx.jar。
您需要在每个更新的build-tools上执行此步骤。

@itzo 那你一定做错了什么。描述的步骤允许我即使在使用构建工具“28.0.3”时仍然可以使用Eclipse。这对我在“28.0.2”上也有效。 - Enyby
谢谢,这是一个绝佳的方法来使用 Eclipse ADT 开发 Android 项目,它完美地工作! - PGibouin
完美,我的工作仍在使用Eclipse,做得好。 - Juan Pablo
这应该是被接受的答案,因为它解释了问题的根本原因。是的,仍然有人在使用Eclipse+ADT构建非常旧的Android应用程序。 - WebViewer

13

今天我也遇到了同样的错误,偶然发现了你的帖子。经过几次尝试,我发现删除 26 rc1 Build-tools可以帮助解决这个问题。


感谢您分享您的答案/解决方案Vancent。我最终使用了Android Studio并放弃了Eclipse,但是如果我再次尝试Eclipse并遇到相同的问题,我会尝试您的解决方案。希望其他人也可以尝试并确认它是否适用于他们。 - Jaime Montoya
1
我有26个rc2 Build-tools,我已经删除了它们,但我的问题仍然存在。 - Ishara Amarasekera
@IsharaAmarasekera 你使用的Build-tools版本是哪个?看起来只有在Eclipse中才有,因为最新版本似乎不受Android官方支持。 - Vancent
@Vancent,这个问题在我使用26.0.3版本时出现,当我尝试移除它以查看是否能解决该问题时,错误转移到了26.0.2和26.0.1。现在,最高版本我使用的是25.0.3,问题不再存在。正如您所提到的,也许Eclipse不支持最新版本。 - Ishara Amarasekera

10

1
在另一台计算机上,即使按照这个答案的步骤也无法工作。 直到我使用“Android SDK Manager”卸载了“工具”和“工具(预览频道)”文件夹中的所有内容,然后只安装与“Rev.25.2.5,25.0.4和19.1”对应的三个项目,才修复了错误并允许编译。 - Jaime Montoya

9

让Eclipse和Android Studio一起工作

> add this to the project.properties of your project:
> sdk.buildtools=25.0.2

3

在为此错误苦苦挣扎了数小时后,我找到了一些线索,你可能会发现这个谜题有用。

首先,我在当前工作区找到了一个日志文件,其中记录了错误信息,特别是:

!ENTRY org.eclipse.andmore 4 0 2017-12-21 06:05:34.764
!MESSAGE Failed to load C:\Program Files (x86)\Android\android-sdk\build-tools\27.0.2\lib\dx.jar
!STACK 0
java.lang.ClassNotFoundException: com.android.dx.command.DxConsole
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.andmore.internal.build.DexWrapper.loadDex(DexWrapper.java:109)
    at org.eclipse.andmore.internal.sdk.Sdk.getDexWrapper(Sdk.java:806)
    at org.eclipse.andmore.internal.build.BuildHelper.executeDx(BuildHelper.java:777)
    at org.eclipse.andmore.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:274)
    at org.eclipse.andmore.internal.project.ExportHelper$2.run(ExportHelper.java:376)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

除了“无法加载”之外,还有其他问题。

我检查了dx.jar并验证了DxConsole类不存在。而且,DxConsole也不在26.0.3中。但是,在25.0.3中我找到了它(我只是使用任何二进制工具打开了jar文件并寻找DxConsole。即使它是一个Zip文件,DxConsole文件名也不能被压缩,因此很容易搜索)。

总之,那些说用旧版本的dx.jar替换dx.jar的用户到某种程度上是正确的。
-首先需要关闭Eclipse(否则尝试替换jar文件时会出现错误)
-请注意要使用哪个dx.jar版本进行替换(对我来说,25.0.3起作用)
-备份{android sdk} \ build-tools \ 27.0.2 \ lib \ dx.jar并将其替换为{android-sdk} build-tools \ 25.0.3 \ lib \ dx.jar
-这个问题可能会发生在任何拥有26.0.x版本的人身上
-这对我有用,之后我遇到了“未找到DEX文件”,但我想这与本问题无关。否则,我将改进此答案。

要注意的几件事:

- 我正在使用Eclipse Neon 3。
- 我的项目正在使用Android 4.2.2(API 17)和Android(API 10),因此问题似乎与我的项目无关。我相信有聪明的人会弄清楚发生了什么。


3

首先运行Android SDK管理器,下载Android SDK Build-Tools 25.0.3。

打开project.properties文件并添加以下行:

(sdk.buildtools=25.0.3)

最后重新启动Eclipse。

2

我之前也遇到了同样的问题,不过我决定先卸载eclipse,然后删除整个文件夹...具体操作是在eclipse页面上点击帮助--->关于eclipse--->安装详细信息,进行卸载。在删除整个文件夹后,我重新从SDK下载管理器中下载了eclipse和所有的SDK,这样问题就解决了。希望对你有用。


我在另一台电脑上尝试,但出现了完全相同的错误。 - Jaime Montoya
1
但是你明白为什么卸载并重新安装Eclipse可以解决你的问题吗?我在另一台电脑上安装了整个环境,但仍然遇到了同样的问题。 - Jaime Montoya

2

我使用的是旧版 build-tools 25.0.0

看起来 Eclipse 不想与更新版本一起工作。但是,Android Studio 可以毫无问题地识别它们。


我早就放弃了Eclipse,现在一直在使用Android Studio。我只是为了将代码从Eclipse迁移到Android Studio而使用Eclipse。在2018年使用已经过时的Eclipse插件进行Android开发就像试图使用Windows XP一样。我知道它曾经是一个非常成功的操作系统,但现在它已经被官方停止支持和弃用了。你必须尽力尝试转移到Android Studio。官方已经宣布,Eclipse已经被弃用,Google希望开发者使用Android Studio。他们只支持Android Studio。 - Jaime Montoya

1
我遇到了同样的错误。
在Android SDK管理器中,我卸载了所有的。
Android SDK Build-Tools.

然后我只安装了


Android SDK Build-Tool Version 25.0.3.

完成后,我就可以构建我的应用程序了。


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