当前位置:编程学习 > JAVA >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,