java - 无法使用 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");
),它们显示不同的输出。即在ProcessBuilder命令中不显示jdk/bin的路径。
我该如何解决这个问题?
解决方案
是的,正如@MichaelBerry 所说,您可能无权访问它,但除此之外我也想包括在内,
在这里,您已经开始使用非常好的ProcessBuilder-jar
,您只需要在 processBuilder 的构造函数中修改参数之类的小东西。
我在下面发布了示例代码,它可以帮助您了解它是如何工作的。
ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
推荐阅读
- javascript - setTimeout 行为与两个不同的语句
- javascript - Angular - 在下一个和后退按钮上删除活动状态
- javascript - 如何在javascript警报的弹出窗口中添加消息中的链接?
- c# - 从 3.1.4 更新身份服务器 4 4.0.0 Scope is invalid asp.net core 3 with Mongo DB
- swift - 如何在 SwiftUI 中设置 ScrollView 的 contentInset
- amcharts - amCharts - 标签中的多个超链接
- tfs - 如何在 TFS / DevOps 仪表板中自动扩展查询结果?
- bioinformatics - 使用床文件提取fasta序列时如何获得链
- mysql - 基数违规:使用的 SELECT 语句具有不同的列数
- rabbitmq - 无法从 RabbitMQ .NET 客户端发布消息