java - 从 Java 程序运行 Jar 文件
问题描述
我正在尝试.jar
从我的Java
程序中运行一个。我习惯ProcessBuilder
这样做,但它不能正常工作。
我想知道我是否遗漏了什么。
这就是我目前正在尝试运行的.jar
ProcessBuilder pb = new ProcessBuilder("java", "-jar", System.getProperty("user.home") + "/JARFile/JARFile.jar");
Process p = pb.start();
我的目录是正确的,所以我不确定为什么它不能正常工作。
我的参数有问题new ProcessBuilder
吗?
解决方案
1)在第三个参数中设置文件的完整路径:
ProcessBuilder pb = new ProcessBuilder("java", "-jar",
"/home/meiskalt7/Documents/runJar-55056616-1.0-SNAPSHOT.jar");
结果将如下所示:
public static void main(String[] args) throws IOException {
ProcessBuilder pb = new ProcessBuilder("java", "-jar",
"/home/meiskalt7/Documents/runJar-55056616-1.0-SNAPSHOT.jar");
Process p = pb.start();
InputStream in = p.getInputStream();
System.out.println(new BufferedReader(new InputStreamReader(in))
.lines().collect(Collectors.joining("\n")));
}
在控制台中你会看到执行结果
2)如果一切都好,那么你必须检查你的系统属性
System.out.println(System.getProperty("user.home"))
如果路径看起来像第一步中的路径,那么您必须将路径与等于运算符进行比较:
System.out.println((System.getProperty("user.home") + "/JARFile/JARFile.jar")
.equals([YOUR FULL PATH]))
也许您在路径中使用另一种语言的符号的问题
2*) 如果出现问题,您可以在流程的错误流中检查流程执行的错误:
InputStream err = p.getErrorStream();
System.out.println(new BufferedReader(new InputStreamReader(err))
.lines().collect(Collectors.joining("\n")));
推荐阅读
- node.js - TypeScript 在 Express 中添加自定义请求标头
- c# - 当用户在 DataGridView 中编辑单元格时,BindingSource 不更新(简单的损坏示例)
- r - 如何动态生成数据框变量名称并使用它来处理现有数据框变量?
- ios - iTunes 如何检测 DFU 模式,我可以更改它以在 macOS 上打开另一个程序吗
- javascript - 在 JavaScript 中导出内部函数?
- python - 为什么 scipy 'cKDTree' 在查找最近点时比 'cdist' 慢?
- spring - 为什么这个最大文件大小配置不起作用?
- sql - 使用 Case 语句转换查询
- c++ - 为什么函数中用作返回值的类实例在函数返回时不调用其析构函数?
- maven - 使用本地依赖和远程