繁体   English   中英

无法使用 processbuilder 运行 java 命令

[英]Unable to run java commands using 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"); )时,它们显示不同的输出。 即在ProcessBuilder命令中不显示jdk/bin的路径。

我该如何解决这个问题?

是的,正如@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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM