Gradle构建失败,无法运行程序没有此类文件或目录

Ido*_*Ran 9 gradle

我有一个gradle构建文件,需要运行以下任务sphinx-build,我在Mac OS X上使用gradle信息运行它.

task makeDocs(type:Exec) {
    workingDir 'sphinx'
    commandLine 'sphinx-build'
    args = ["-b", "html", "-d", "build/doctrees", "-t", "$platformDir", "build/ppsource", "build/html"]
}
Run Code Online (Sandbox Code Playgroud)

当我运行此任务时,我得到以下异常:

Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'sphinx-build'
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
    at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:65)
    ... 1 more
Caused by: java.io.IOException: Cannot run program "sphinx-build" (in directory "/Users/idoran/Documents/Seebo/dev/SDK/seebosdk_docs/sphinx"): error=2, No such file or directory
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
    ... 3 more
Caused by: java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)

当我从同一个终端运行sphinx-build时,一切正常.


$ gradle --version

------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------

Build time:   2014-11-24 09:45:35 UTC
Build number: none
Revision:     6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a

Groovy:       2.3.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_65 (Oracle Corporation 25.65-b01)
OS:           Mac OS X 10.10.5 x86_64
Run Code Online (Sandbox Code Playgroud)

Ste*_*e-B 9

尝试停止 gradle 守护进程 ./gradlew --stop

我遇到了同样简单的问题:

commandLine = [ "node", "--version"]
Run Code Online (Sandbox Code Playgroud)

它归结为 gradle 守护进程具有不再存在的节点的缓存位置(我之前曾更新过节点)。


Vam*_*ire 8

你不应该使用commandLine+ args.无论是commandLine与可执行文件和所有的参数或executable+ args通常是更好的选择.

  • 需要更多细节 (4认同)

San*_*nan 5

我有类似的问题.. 使用 Vampire 的解决方案,我能够加强.. 但是问题似乎是 sh 文件无法指向确切的文件位置。

意思是,即使正确设置了 workingDir(实际 sh 文件所在的位置),仍然会出现以下异常。

Caused by: java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)

终于,这个帖子解决了这个问题..

虽然这篇文章的问题的原始问题已经解决,但想到分享这个将绝对文件路径添加到实际 sh 文件的解决方案将"No such file or directory"在未来解决这个问题。

我遇到了类似的问题,并通过对 sh 文件的绝对路径引用解决了这个问题。

我的是,

workingDir = "path_to_the_actual_sh_file_to_be_executed"
executable = new File(workingDir, 'actual.sh')
args = ['configure', 'manageRepo', '-tenant', 'etc...']
Run Code Online (Sandbox Code Playgroud)