无法使用 processbuilder 运行 java 命令
Unable to run java commands using processbuilder
我正在尝试从另一个 java 程序 运行 java class 文件。
这是我的程序:
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();
}
}
在 运行 运行此程序后,我收到以下错误:
Exception in thread "main" java.io.IOException: Cannot run program "java"
但是当我从我的终端 运行 任何 java 命令时,它们工作得非常好。
我发现的另一件事是,当我在终端中 运行 命令:echo $PATH
并使用 ProcessBuilder (ProcessBuilder pb = new ProcessBuilder("bash","-c","echo $PATH");
) 时,它们显示不同的输出。即 jdk/bin 的路径未显示在 ProcessBuilder 命令中。
我该如何解决这个问题?
是的,正如@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();
我正在尝试从另一个 java 程序 运行 java class 文件。
这是我的程序:
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();
}
}
在 运行 运行此程序后,我收到以下错误:
Exception in thread "main" java.io.IOException: Cannot run program "java"
但是当我从我的终端 运行 任何 java 命令时,它们工作得非常好。
我发现的另一件事是,当我在终端中 运行 命令:echo $PATH
并使用 ProcessBuilder (ProcessBuilder pb = new ProcessBuilder("bash","-c","echo $PATH");
) 时,它们显示不同的输出。即 jdk/bin 的路径未显示在 ProcessBuilder 命令中。
我该如何解决这个问题?
是的,正如@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();