我正在尝试从.jar
程序中运行Java
。我正在使用ProcessBuilder
来执行此操作,但是它无法正常工作。
我想知道我是否想念一些东西。
这是我目前正在尝试运行.jar
ProcessBuilder pb = new ProcessBuilder("java", "-jar", System.getProperty("user.home") + "/JARFile/JARFile.jar");
Process p = pb.start();
我的目录正确,所以我不确定为什么它不能正常工作。
我在new ProcessBuilder
中的参数有问题吗?
答案 0 :(得分:0)
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"))
如果第一步中的路径看起来像路径,那么您必须将路径与equals运算符进行比较:
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")));