我正在使用Windows并安装了来自SourceForge的Unix Utils。普通命令(例如ls
和cat
)在 Windows CMD 中工作,但是当我尝试使用 Java <中的ProcessBuilder
运行它们时/ strong>,我收到此错误代码:Cannot run program "ls": CreateProcess error=2, The system cannot find the file specified
。
我的代码如下:
....
BufferedReader console = new BufferedReader
(new InputStreamReader(System.in));
commandLine = console.readLine();
cmd = new ArrayList<String>();
String[] commands = commandLine.split(" ");
for(String command: commands){
if(!command.equals(" ")){
cmd.add(command);
}
}
System.out.println(cmd.toString());
try {
System.out.println("trying to run ls");
ProcessBuilder pBuilder = new ProcessBuilder(cmd);
Process p = pBuilder.start();
}catch(IOException e){
System.out.println("Invalid command.");
System.out.println(e.getMessage());
}
答案 0 :(得分:0)
终于找到了解决方案,但我实际上并不知道这是否是解决问题的最佳方法。
我正在上课,我的教授告诉我将一些必要的文件从UnxUtils复制到System32。
这适用于在Windows cmd shell上调用Unix命令,但不能通过Java ProcessBuilder
调用。我将JDK根添加到一个名为JAVA_HOME
的环境变量中,添加了UnxUtils/bin
和UnxUtils/usr/local/wbin
然后重新启动了我的IDE。它现在有效。