我正在尝试从另一个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命令中。
我该如何解决这个问题?
答案 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();