无法使用 processbuilder 运行 java 命令

我正在尝试从另一个 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 命令中。


我该如何解决这个问题?


qq_花开花谢_0
浏览 154回答 1
1回答

汪汪一只猫

是的,正如@MichaelBerry 所说,您可能没有访问它的权限,但除此之外我还想包括在内,在这里,您已经从非常好的ProcessBuilder开始,您只需要修改-jarprocessBuilder 的构造函数中的参数之类的小东西。我在下面发布了示例代码,可以帮助您了解它是如何工作的。ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");pb.directory(new File("preferred/working/directory"));Process p = pb.start();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java