繁体   English   中英

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

[英]Correct way to run another java program from java

我想从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:输入/输出流 Java 7中对此进行了改进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM