gpt4 book ai didi

java - 从java运行另一个java程序的正确方法

转载 作者:行者123 更新时间:2023-12-01 18:37:25 25 4
gpt4 key购买 nike

我想从 java 应用程序运行以下 shell 命令:

java -jar saxon9he.jar -warnings:fatal a.xml a.xsl param1=123 param2=abc

目前,我只是使用 shell 命令来执行它

ProcessBuilder pb = new ProcessBuilder(commandLineParts);
[...]
Process process = pb.start();

在java中执行此操作的正确方法是什么?

最佳答案

这是在 Java 中执行命令的正确方法。只是为了消除可能的混淆:ProcessBuilder 不使用 shell 执行程序。这就是为什么您必须向它提供参数列表而不是单个字符串(将由 shell 解析)的原因。

有两种可能:

  • 您想在新的 JVM 中运行 Java 程序,然后使用ProcessBuilder 是正确的选择
  • 或者你不介意它是否在同一个 JVM 中执行,然后你可以按照 Sean 的建议自己调用 main 方法(可能在不同的线程中)

根据应用程序的类型,另一个选项是使用应用程序服务器执行一些操作来启动其中的应用程序。

如果您使用 ProcessBuilder,请小心处理其输入和输出流 - 如果您不处理它们,您的应用程序可能会挂起:Java ProcessBuilder: Input/Output Stream Java 7 中对此进行了改进。

关于java - 从java运行另一个java程序的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com