我有一个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)
尝试停止 gradle 守护进程 ./gradlew --stop
我遇到了同样简单的问题:
commandLine = [ "node", "--version"]
Run Code Online (Sandbox Code Playgroud)
它归结为 gradle 守护进程具有不再存在的节点的缓存位置(我之前曾更新过节点)。
你不应该使用commandLine+ args.无论是commandLine与可执行文件和所有的参数或executable+ args通常是更好的选择.
我有类似的问题.. 使用 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)
| 归档时间: |
|
| 查看次数: |
8251 次 |
| 最近记录: |