Java 进程生成器 : command not found

标签 java linux processbuilder

我正在尝试运行我在 Linux 上找到的一些 Java 代码。

    maudecmd = new String[files.length+5];
    maudecmd[0] = "maude";
    maudecmd[1] = "-no-banner";
    maudecmd[2] = "-no-ansi-color";
    maudecmd[3] = "-no-mixfix";
    maudecmd[4] = "-no-wrap";
    for(int i = 0; i < files.length; ++i) {
        maudecmd[5+i] = files[i];
    }

    ProcessBuilder pb = new ProcessBuilder(maudecmd);
    if(dir != null)
        pb.directory(dir);
    pb.redirectErrorStream(true);
    maude = pb.start();

这会抛出 IOException - bash 无法找到“maude”命令。

虽然我在我的 .bashrc 文件中有这个别名:

alias maude='~/lib/maude/maude.linux'

如果我这样修改代码:

maudecmd[0] = "/u/h/os215/lib/maude/maude.linux";

它工作正常。

我想更改此代码以使其更健壮 - 如果有人可以在命令行上运行 Maude,则 ProcessBuilder 也应该能够使用它,无论用户必须使用何种特定方法将 Maude 链接起来。

这能实现吗?

最佳答案

.bashrc 别名只影响 BASH shell。您可以改为导出一个环境变量,但我不知道 Java 的 ProcessBuilder 是否会选择它。

话虽如此,我不明白为什么这行不通:
maudecmd[0] = "/bin/bash maude";

关于Java 进程生成器 : command not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942897/

相关文章:

java - 只有常量的接口(interface)

java - 如何使用 FileInputStream 加载配置 xml 文件,但出现 FileNotFoundException

linux - 使用 Linux (Debian) 获取图像中像素的颜色

linux - 用于重新启动的 crontab 不起作用

c - 长文件路径的 stat 替代方案

java - 从 Windows 上的 Java 进程启动时,设置环境变量的 Ruby 脚本失败,并出现参数无效 - ruby​​_setenv (Errno::EINVAL)

java - 进程挂起 waitFor() 方法

java - JPQL批量删除后EntityManager刷新?

java - 如何将属性文件中的所有值作为键传递给 HashMap

java - 使用 Java 中的 ProcessBuilder 将一个进程的输出重定向到另一个进程的输入