java调用cmd命令出现异常

zhutoufly 2012-09-09 06:18:56
例子: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
...全文
576 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2012-09-10
  • 打赏
  • 举报
回复
3楼基本正解。 在win下,要用cmd启动控制台哦。 win7底层不再是以前的DOS系统,而dir是属于DOS命令行的。
BadPattern 2012-09-10
  • 打赏
  • 举报
回复
windows里面有"dir"这个命令么??没有吧!
Alexander 2012-09-09
  • 打赏
  • 举报
回复
具体原理不太清楚,只知道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先结束的问题。在网上找了个解决方案:
入口
zhutoufly 2012-09-09
  • 打赏
  • 举报
回复
自己顶
zhutoufly 2012-09-09
  • 打赏
  • 举报
回复
补充一下,可以使用 exec("hh a.chm") 打开chm文件

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧