我有一个Java程序,要求用户输入需要执行的文件的路径。
路径可以是这样的例子:C:/ProgramFiles/Citrix/ICA Client/pnagent.exe
我使用此路径创建一个File
对象,并检查以确保它存在,并检查以确保它是一个文件,并检查确保它是可执行的。就File
而言,它是一个完全有效的对象。
注意: File
对象称为“脚本”
但是当我运行脚本时,我会收到空格错误。
Runtime rt = java.lang.Runtime.getRuntime();
Process pp = rt.exec(script.getAbsolutePath());
我100%第一行正常工作。我收到的错误是下图:(我把它显示在JOptionPane中。)
删除错误的最佳方法是什么?先谢谢!
尝试解决方案#1:
Process pp = rt.exec("\""+script.getAbsolutePath()+"\"");
当我使用C:\Tools\IT Support\bookmark.htm
时,我得到了
答案 0 :(得分:4)
修改强>
到目前为止,最可靠的方法是使用Runtime.exec(String[] cmdarray)。
如果使用Runtime.exec(String command),Java只会在空格上拆分命令。
命令字符串使用由调用new StringTokenizer(命令)创建的StringTokenizer分解为标记,而不进一步修改字符类别。然后,由tokenizer生成的标记以相同的顺序放置在新的字符串数组cmdarray中。
或使用ProcessBuilder这样的内容:
ProcessBuilder pb = new ProcessBuilder("ln", "-s", "dir1/dir2", "my dir/dir2");
Process p = pb.start();
答案 1 :(得分:1)
尝试
String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",script.getAbsolutePath()};
Runtime.getRuntime().exec(commands);
这是一个仅限Windows的解决方案。
java.awt.Desktop可能是您情况下更好的解决方案,因为您需要“文件关联”机制。
public static void open(File document) throws IOException {
Desktop dt = Desktop.getDesktop();
dt.open(document);
}