【发布时间】:2015-05-07 07:45:59
【问题描述】:
我有一个名为galen.bat 的.bat 文件。我在PATH 环境变量中包含了这个文件的路径。
当我跑步时:
galen.bat --version
在cmd,我得到以下输出:
Galen Framework
Version: 1.6.3
JavaScript executor: Rhino 1.7 release 5 2015 01 29
我有以下 java 代码,我试图通过我的应用程序运行相同的命令 -
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "galen.bat --version");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
}
当我运行它时,我得到以下错误 -
'galen.bat' is not recognized as an internal or external command,
operable program or batch file.
请注意,如果我使用
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "java -version");
而不是
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "galen.bat --version");
然后我会在我的 Eclipse 控制台窗口中得到正确的输出 -
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
为什么galen.bat --version 不起作用?我该如何解决?
谢谢!
【问题讨论】:
-
你试过给
.bat文件的完整路径吗? -
尝试提供 bat 文件的完整路径,或者(可能不太有用)将其放在 java 应用程序的工作目录中。
-
您的整个代码是此答案stackoverflow.com/questions/15464111/… 的副本,其中清楚地提到了它所做的事情..您的代码中缺少..仔细阅读该答案
标签: java cmd processbuilder