Java 不在 Linux 中执行命令

标签 java linux user-interface command-line

我正在为 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"

最佳答案

问题可能出在文件名中的空格,或者更准确地说,引号在命令字符串中不起作用,因为它不是由 shell 处理的。

尝试使用接受字符串数组的 exec 方法:

p = Runtime.getRuntime().exec(new String[] {"wit", "extract", jtPath, tmpPath});

并且仍然处理标准输出和错误。

关于Java 不在 Linux 中执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718761/

相关文章:

Java线程的创建和执行

java - 为什么 Thread.interrupt() 不能中断试图获取锁的线程

java - 如何在Hybris中删除表的所有记录?

linux - 为 tcpdump 编写一个 linux 脚本以停止并再次运行,但将信息保存在另一个文件中

matlab - 使用 GUIDE (MATLAB GUI) 时 GUI 元素的属性存储在哪里

java - 无法在不同方法中定义的内部类中引用非最终变量

php - 目录更新后 Poedit 崩溃

linux - 使用命令行在启动后重定向进程的 STDERR/STDOUT?

java - 我应该了解什么 Java 知识才能创建桌面应用程序?

user-interface - 这个 GUI 原理叫什么?