处理方法不执行所需程序

时间:2013-10-06 09:56:35

标签: java

public class test2 {
    public static void main(String[] args) {
        try {
            // print a message
            System.out.println("Executing VLC.exe");
            Process process = Runtime.getRuntime().exec("C:\\Program Files\\VideoLAN\\VLC\\vlc.exe");
            // print another message
            System.out.println("VLC should now open.");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

这是错误:

Cannot run program "C:\Program": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)   at
 java.lang.Runtime.exec(Unknown Source)     at
 java.lang.Runtime.exec(Unknown Source)     at
 java.lang.Runtime.exec(Unknown Source)     at test2.main(test2.java:21)
Caused by: java.io.IOException: CreateProcess error=2, The system
 cannot find the file specified     at java.lang.ProcessImpl.create(Native
 Method)    at java.lang.ProcessImpl.<init>(Unknown Source)     at
 java.lang.ProcessImpl.start(Unknown Source)    ... 5 more***

但是这个程序很容易运行notepad.exe和相关的文本文件。那么它只能在Win32中运行程序吗?

2 个答案:

答案 0 :(得分:2)

enter image description here

这是带有dos的图片......

答案 1 :(得分:1)

此问题是由于“程序文件”中的空格。

您可以使用带有String []的Runtime#exec来避免此类问题:

Runtime.getRuntime().exec(new String[] {"cmd", "/c", "start", "C:\Program Files\VideoLAN\VLC\vlc.exe"});

这样您就不必担心引用文件名了。但是,您仍然需要担心在文件名中引用\。