java调用cmd命令出现异常
例子: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 --------------------编程问答-------------------- 补充一下,可以使用 exec("hh a.chm") 打开chm文件 --------------------编程问答-------------------- 自己顶 --------------------编程问答-------------------- 具体原理不太清楚,只知道Windows行命令的完整形式是cmd /c [命令名称]。还等大神解释。
对于外部命令(可执行文件),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先结束的问题。在网上找了个解决方案:
入口
--------------------编程问答-------------------- windows里面有"dir"这个命令么??没有吧! --------------------编程问答-------------------- 3楼基本正解。 在win下,要用cmd启动控制台哦。 win7底层不再是以前的DOS系统,而dir是属于DOS命令行的。
补充:Java , Java SE