【问题标题】:java.io.IOException: Cannot run program "dx": error=2, No such file or directoryjava.io.IOException:无法运行程序“dx”:错误=2,没有这样的文件或目录
【发布时间】:2017-11-27 11:52:42
【问题描述】:
def result = "dx --dex --output=${aarDex}   ${classesJar}".execute()

我使用 groovy 在 gradle-plugin 中执行此代码,但它在控制台中给了我一个错误信息:

FAILURE:构建失败并出现异常。

出了什么问题:

任务“:app:fakeDexDebug”执行失败。 java.io.IOException: 无法运行程序“dx”:错误=2,没有这样的文件或目录

我在终端执行 dx 是好的。我浪费了七个小时来解决它,但是这个错误也在运行。你能告诉我为什么我不能这样做。

【问题讨论】:

    标签: android gradle groovy


    【解决方案1】:

    该错误意味着可执行文件dx 未包含在您执行Gradle 的用户的PATH 变量中。

    但无论如何,如果您在 Gradle 中,我建议您不要使用 Groovy String.execute() 方法,而是创建一个类型为 Exec 的任务来执行您的程序,或者如果它是多个操作的一部分任务,exec() 方法与Exec 任务具有相同的功能。

    【讨论】:

    • 很高兴收到您的回答,但我可以在终端执行 dx。所以我认为我的路径是正确的。而且我只能在 gradle-plugin 中执行。我会崩溃的。哦,我的上帝。
    • 也许可以尝试 "echo $PATH".execute() 来验证您的 PATH 中的内容。
    • 非常感谢,我在多台计算机上执行我的代码,但是不行。
    • 很抱歉,如果不动手,我只能说在 PATH 中找不到可执行文件。
    • 我解决了。但我不知道为什么。我添加了一个 gradle-plugin 的扩展并分配了 dx'absolutePath,然后它就起作用了。
    【解决方案2】:

    在windows系统中使用dx.bat而不是简单地使用dx

    制作一个更容易的 gradle 任务,如下所示

    task makeDex(type: Exec) {
        workingDir '.'
        commandLine "dx.bat", "--dex", "--output", "E:\\output.dex", "E:\\input.jar"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2019-03-17
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      相关资源
      最近更新 更多