首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有绝对目录的Runtime.exec()

具有绝对目录的Runtime.exec()
EN

Stack Overflow用户
提问于 2009-07-09 16:41:35
回答 3查看 9.7K关注 0票数 4

我想使用Runtime.exec()在一个带有空格的目录中启动另一个进程。(这听起来很愚蠢,但我真的想满足我的好奇心)

问题的详细信息(简化版本)我的myprogram.exe位于C:/Program Files/MyProgram中。

我观察到: 1)。当我调用Runtime.exec("C://Program Files//MyProgram//myprogram.exe")时,IOException指示:找不到文件C:/Program,错误代码= 2。我认为这一定是空格的结果

2)。我尝试过: Runtime.exec("/"C://Program Files//MyProgram//myprogram.exe/""),IOException表示:找不到文件:"C:/Program Files/MyProgram/myprogram.exe“

3)。我吸取了教训并尝试了Runtime.exec()的重载版本: file dir = new File("C://Program Files//MyProgram//");然后运行: Runtime.exec(" myprogram.exe ",null,dir),结果显示: can't find File myprogram.exe in C:/Program Files/MyProgram/

4)。我尝试了1),而不是“程序文件”,我将其重命名为Program_Files,一切正常

我知道我也可以使用ProcessBuilder来做类似的事情,但我不能让它在我的心中…(也许这是我的弱点)。谁能告诉我为什么2)和3)不起作用?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-09 19:05:09

几分钟前我看到了另一个答案,在评论区,我终于找到了解决它的方法。很抱歉,我不知道这个答案是如何删除的……或者是谁通过评论答案给出了答案...

更新:通过进一步的调查,我发现是Matt Kane通过评论给出了正确的答案。请允许我对您的帮助表示深切的感谢。;-)

以下是我如何根据Matt的评论来处理它,并测试了它的工作情况:

代码语言:javascript
复制
String[] cmdArray = new String[]{"C://Program Files//MyProgram//myprogram.exe", arg1, arg2};
Runtime.exec(cmdArray);

其中,arg1和arg2是传递给myprogram.exe的两个参数

使用exec()的重载版本:

1)进程执行(String[]命令)

2)进程执行( String[]命令,String[]环境)

3)进程执行( String[]命令、String[]环境、文件目录)

这两个都行。这里我想提到3)中的dir和cmdarray中的绝对路径之间的区别,在我的例子中,绝对路径可以是""C://Program Files//MyProgram//“”。

在3)中的目录中,您可以指定运行.exe的目录,您指定的所有相对目录都将附加在此目录之后。示例:如果您的目录是C:/Hello World,并且在您的文件夹中,您将在/folder1中存储一个文件,最后您会发现该文件位于C:/Hello World/ .exe 1中

但是,目录不适用于可执行文件(在我的例子中,它是myprogram.exe)。例如,如果您的目录位于C:/Program Files/MyProgram/,并且您已经将.exe设置为C:/Program Files/MyProgram。如果不指定可执行文件的绝对路径,则无法成功运行该程序。在我的例子中,你只能通过: cmdarray = "C://Program Files//MyProgram//myprogram.exe“如果你犯了错,错误将如下所示: java.io.exception:无法运行程序"myprogram.exe”(在"C:/Program Files/MyProgram/“目录中):CreateProcess error=2,系统找不到指定的文件。注意,它只显示“无法在**目录中运行”,而不是“无法在*目录中找到文件”。我认为这很可笑,但不管怎样,这就是它的工作方式。

票数 5
EN

Stack Overflow用户

发布于 2009-07-09 16:47:20

试着在空格前加一个反斜杠..."C:/Program\ and\ Files/MyProgram/myprogram.exe“

你必须使用双反斜杠,这样它才能传递给操作系统。

如果不起作用,请尝试"C:/\"Program and Files\"/MyProgram/myprogram.exe“

票数 0
EN

Stack Overflow用户

发布于 2014-02-24 22:03:39

我遇到了同样的问题,并使用c:\PROGRA~1而不是c:\program files解决了它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1105085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档