2017-04-08 54 views
0

我一直在搞运行一些.exe文件,它似乎有阻止它在appdata中运行它的东西?运行时exec不能在appdata中运行程序?

Runtime.getRuntime().exec(System.getenv("APPDATA") + "test.exe"); 

这是错误我得到

java.io.IOException: Cannot run program "C:\Users\Cole": CreateProcess error=2, The system cannot find the file specified 
+0

你不是逃避空间。 – Siguza

+0

有BTW 3相关的问题,扩大了一些答案。 – eckes

回答

1

,因为它需要操作系统特定转义,则不应使用普通的exec(String)方法。如果你使用string array version它应该找到可执行文件。

检查变量是否存在以及是否以\结尾,然后将其与文件名连接起来也是一个好主意。或者更好地使用hierachical文件构造函数:

String appdata = System.getenv("APPDATA"); 
if (appdata == null || appdata.trim().isEmpty()) 
    appdata="."; 
String fileName = new File(appdata, "test.exe").getAbsolutePath(); 
Runtime.getRuntime().exec(new String[]{fileName /*, noargs */}); 
+0

你能举个例子说明如何做到这一点吗? –

0

一个简单的方法是使用File对象构造路径。

final String f = new File(System.getenv("APPDATA"), "test.exe").toString(); 
final Process p = Runtime.getRuntime().exec(new String[] { f });