黑马程序员技术交流社区

标题: Eclipse中用Runtime打开扫雷失败 [打印本页]

作者: paozhuanyinyu    时间: 2014-8-4 13:00
标题: Eclipse中用Runtime打开扫雷失败
本帖最后由 paozhuanyinyu 于 2014-8-5 19:09 编辑

按照视频上讲的将扫雷可执行文件拷贝在C盘下,但是打开失败,出现乱码,换成C:\\Program Files\\Microsoft Games\\Minesweepe 依然失败。程序代码如下:
public class RuntimeDemo {

        public static void main(String[] args) throws Exception {
                Runtime r = Runtime.getRuntime();
                r.exec("C:\\MineSweeper");
                }
}


作者: 草鱼狂飙    时间: 2014-8-4 14:02
我系统精简版本的,没有扫雷,
我以记事本为例说明下你代码中的几个问题

1)   r.exec("C:\\MineSweeper");
假如这句代码中单词正确,至少应该修改为MineSweeper.exe
2)Runtime中
exec(String command)
   在单独的进程中执行指定的字符串命令。
不能有路径吧。
3)exec(String[] cmdarray, String[] envp, File dir)
          在指定环境和工作目录的独立进程中执行指定的命令和变量。
需要路径的可以用这种方法
4)win7和win8对直接访问c盘数据的程序有保护程序
如果真要测试路径建议放d盘,这样会避免许多莫名其妙的问题。
作者: 반야_바라_밀    时间: 2014-8-4 15:22
很明显你这个是由于没有加.exe后缀造成的。。。
作者: gm1314    时间: 2014-8-4 15:30
牛!!!!!!!!!!!!
作者: fantacyleo    时间: 2014-8-4 16:40
其实楼主你的程序已经运行成功了,如果是找不到扫雷程序,那么应该不会弹出GUI对话框,而是直接在命令行就显示:bad name or command 我觉得扫雷程序已经启动,但你光copy可执行文件到C盘根目录下是不行的,那些必须的辅助文件,比如dll之类的找不到了,就会报错。我直接在原始目录下运行,一切正常:
  1. Runtime r = Runtime.getRuntime();
  2. r.exec("C:\\Program Files\\Microsoft Games\\Minesweeper\\Minesweeper");
复制代码

作者: paozhuanyinyu    时间: 2014-8-4 18:33
반야_바라_밀 发表于 2014-8-4 15:22
很明显你这个是由于没有加.exe后缀造成的。。。

不需要加exe在win7中
作者: paozhuanyinyu    时间: 2014-8-4 18:39
fantacyleo 发表于 2014-8-4 16:40
其实楼主你的程序已经运行成功了,如果是找不到扫雷程序,那么应该不会弹出GUI对话框,而是直接在命令行就 ...

用原始目录时,我代码少了个:\\Minesweeper; 应该有两个,第一个是文件夹,第二个是可执行文件,两个名字一样。非常感谢,确实不能放在C盘下,XP行win7不行。
作者: paozhuanyinyu    时间: 2014-8-4 18:43
草鱼狂飙 发表于 2014-8-4 14:02
我系统精简版本的,没有扫雷,
我以记事本为例说明下你代码中的几个问题

找到原因了,不能光拷贝可执行文件,win7下还需要dll文件和Minesweeper.exe.mui文件,跟xp不一样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2