我正在为CLI程序制作GUI,当此事件被激活时,jLabel4
文本会立即更改为Task: Finished Exporting
。
为什么.exec(...);
命令不起作用?它不是命令语法,我尝试用touch new.file
替换我的命令,但这也不起作用。
对我来说,似乎没有事件尝试执行命令。
Java代码:
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
if (ext[1].equals("iso") || ext[1].equals("wbfs")) {
String tmpPath = "";
if (jtPath.indexOf(".") > 0)
tmpPath = jtPath.substring(0, jtPath.lastIndexOf("."));
Process p;
try {
p = Runtime.getRuntime().exec("wit extract \"" + jtPath + "\" \"" + tmpPath + "\"");
p.waitFor();
jLabel4.setText("Task: Exporting...");
p.destroy();
} catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("wit extract \"" + jtPath + "\" \"" + tmpPath + "\"");
jLabel4.setText("Task: Finished Exporting");
} else {
JOptionPane.showMessageDialog(null, "You can only extract .iso and .wbfs file formats.");
}
}
命令行输出:
wit extract "/home/adam/Wii Hacking/NSMBW SMNE01.wbfs" "/home/adam/Wii Hacking/NSMBW SMNE01"
答案 0 :(得分:2)
问题可能是文件名中的空格,或者更确切地说,引号在命令字符串中不起作用,因为它不由shell处理。
尝试使用接受字符串数组的exec
方法:
p = Runtime.getRuntime().exec(new String[] {"wit", "extract", jtPath, tmpPath});
仍然处理标准输出和错误。