例子: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

解决方案 »

  1.   

    补充一下,可以使用 exec("hh a.chm") 打开chm文件
      

  2.   

    具体原理不太清楚,只知道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先结束的问题。在网上找了个解决方案:
    入口
      

  3.   

    windows里面有"dir"这个命令么??没有吧!
      

  4.   

    3楼基本正解。 在win下,要用cmd启动控制台哦。 win7底层不再是以前的DOS系统,而dir是属于DOS命令行的。