我试图从我的.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"))
如果路径在第一步看起来像路径,那么你必须将路径与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")));