无法使用ProcessBuilder运行Java命令

时间:2019-07-04 10:13:10

标签: java processbuilder

我正在尝试从另一个Java程序运行Java类文件。

这是我的程序:

import java.io.File;
import java.io.IOException;
import java.lang.ProcessBuilder.Redirect;
public class RunJava {
    public static void main(String[] args) throws IOException {
        ProcessBuilder pb = new ProcessBuilder("java","HelloWorld");
        pb.directory(new File("/home/local/prasanth-8508"));
        pb.redirectOutput(Redirect.INHERIT);
        pb.redirectError(Redirect.INHERIT);
        pb.start();
    }
}

运行该程序后,出现以下错误:

  

线程“ main”中的异常java.io.IOException:无法运行程序“ java”

但是当我从终端运行任何Java命令时,它们绝对可以正常工作。

我发现的另一件事是,当我在终端中运行命令echo $PATH并使用ProcessBuilder(ProcessBuilder pb = new ProcessBuilder("bash","-c","echo $PATH");)时,它们显示了不同的输出。即 jdk / bin 的路径未显示在ProcessBuilder命令中。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

是的,正如@MichaelBerry所说,您可能没有权限访问它,但除此之外,我也想包含它,

在这里,您已经从非常好的ProcessBuilder开始,只需要在processBuilder的构造函数中修改诸如参数-jar之类的小东西。

我在下面的示例代码中发布了代码,这些代码可以帮助您了解其工作原理。

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();