【发布时间】:2014-08-26 17:05:49
【问题描述】:
尝试在 Eclipse 中从 java 运行 shell 脚本时出现以下错误。
我刚刚在本地创建了一个文本文件,想看看它是否会运行。
new ProcessBuilder("C:/Users/myDir/Desktop/ss1.sh").start();
【问题讨论】:
尝试在 Eclipse 中从 java 运行 shell 脚本时出现以下错误。
我刚刚在本地创建了一个文本文件,想看看它是否会运行。
new ProcessBuilder("C:/Users/myDir/Desktop/ss1.sh").start();
【问题讨论】:
您不能直接在 Windows 上运行 shell 脚本,因为它在 Windows 意义上不是可执行文件(只有 .exe、.com、.cmd 和 .bat 是可执行文件)。
调用bash.exe 或sh.exe 并使用您的脚本作为第一个参数。
【讨论】:
new ProcessBuilder("path-to-bash/bash.exe C:/Users/myDir/Desktop/ss1.sh").start(); 或 new ProcessBuilder("path-to-bash/bash.exe -c C:/Users/myDir/Desktop/ss1.sh").start();
在 MrTux 评论之后,我将我从 groovy 调用的 py 脚本包装在一个 bat 文件中,瞧!它可以工作了。
直接从groovy调用py脚本
def proc = "C:\\MyDir\\myScript.py param1 param2 param3".execute()
proc.waitFor()
def result = proc.in.text
def error = proc.err.text
失败了
将 py 脚本封装在 bat 文件中 def proc = "C:\MyDir\myScriptWrapper.bat param1 param2 param3".execute()
作品
想知道为什么 Windows 中的这种行为没有得到更好的记录。非常感谢 MrTux
【讨论】: