例子:Process pro=Runtime.getRuntime().exec("dir");
这条语句在linux上运行没问题,但在windows2003 和 win7上都会出现异常,哪位大侠帮忙解释下。java.io.IOException: Cannot run program "dir": CreateProcess error=2, ?????????
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at name.ethmee.main.Client$Listener.run(Client.java:104)
Caused by: java.io.IOException: CreateProcess error=2, ?????????
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 4 more
这条语句在linux上运行没问题,但在windows2003 和 win7上都会出现异常,哪位大侠帮忙解释下。java.io.IOException: Cannot run program "dir": CreateProcess error=2, ?????????
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at name.ethmee.main.Client$Listener.run(Client.java:104)
Caused by: java.io.IOException: CreateProcess error=2, ?????????
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 4 more
对于外部命令(可执行文件),Runtime貌似可以通过path变量找到对应的文件运行。例如:
Runtime.getRuntime().exec("notepad");
和
Runtime.getRuntime().exec("cmd /c notepad");
都可以打开notepad。
而对于内部命令,它的代码都存在于cmd.exe的内部,不存在对应的文件,所以只能通过完整形式调用。
Runtime.getRuntime().exec("cmd /c dir");另外,直接运行
Runtime.getRuntime().exec("cmd /c dir");
还存在主线程比exec先结束的问题。在网上找了个解决方案:
入口