我想跑" ls" java中的命令和我的代码是 - 注意: - 我正在使用WINDOWS。
import java.io.IOException;
public class Example
{
public void fn()
{
Runtime run = Runtime.getRuntime();
Process p = null;
String cmd = "ls";
try {
p = run.exec(cmd);
p.getErrorStream();
p.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
System.out.println("ERROR.RUNNING.CMD");
} finally {
p.destroy();
}
}
public static void main(String[] args) throws IOException
{
Example sp = new Example();
sp.fn();
}
}
但是在eclipse中运行此代码时出现以下错误 -
java.io.IOException: Cannot run program "ls": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at Example.fn(Example.java:12)
at Example.main(Example.java:28)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 6 more
Exception in thread "main" ERROR.RUNNING.CMD
java.lang.NullPointerException
at Example.fn(Example.java:23)
at Example.main(Example.java:28)
需要纠正的是什么?应该添加哪些库来执行这段代码?
答案 0 :(得分:3)
如果要从Java运行任何命令,请确保PATH
环境变量中存在此文件的可执行文件。
或者至少你必须将工作目录设置为/usr/bin
或类似。
另一个解决方案是使用绝对路径来执行,例如:
Runtime.getRuntime().exec("/usr/bin/ls");
但是指定任何文件的绝对路径是不好的方法。
为什么不使用File#listFiles()
?