2

我正在尝试使用 java 打开一个 exe 文件。我不确定要打开哪个程序,所以我以 Skype 为例。当我尝试这样做时,它给了我错误。

 try {
            Process p = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Skype\\Phone\\Skype");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

错误:无法运行程序“C:\Program”:CreateProcess error=2,系统找不到指定的文件

4

4 回答 4

4

尝试这个:

String path = "/path/to/my_app.exe";
File file = new File(path);
if (! file.exists()) {
   throw new IllegalArgumentException("The file " + path + " does not exist");
}
Process p = Runtime.getRuntime().exec(file.getAbsolutePath());
于 2013-11-03T19:30:05.003 回答
3

您必须使用字符串数组,更改为

try {
        Process p = Runtime.getRuntime().exec(new String[] {"C:\\Program Files (x86)\\Notepad++\\notepad++.exe"});
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
于 2013-11-03T19:27:30.360 回答
1

您在 Windows 上,因此您必须包含扩展名 .exe

 try {
            Process p = Runtime.getRuntime().exec("C:/Program Files (x86)/Skype/Phone/Skype.exe");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

也许使用File.separator而不是'\'

于 2013-11-03T19:25:05.573 回答
1

我试过这个,它工作正常,它来自你的例子。注意双标\\

public static void main(String[] args) {
    try {
        Process p;
        p = Runtime.getRuntime().exec("C:\\Program Files\\Java\\jdk1.8.0_05\\bin\\Jconsole.exe");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
于 2019-06-01T01:08:28.500 回答