Runtime.getRuntime()。exec()执行两行?

我需要在Runtime.getRuntime()。exec()中运行两行,这两行:

cd %CMS_HOME% ant deploy 

现在可以制作一个.bat文件,但我觉得它对于两行是没用的,更简单! 有人有什么想法吗?

把它放在.bat文件中。 这不是无用的; 这就是Runtime.exec的工作原理。

您应该考虑使用ProcessBuilder类而不是Runtime.exec() 。 它在JDK 5中被引入作为Runtime.exec()的后继者。

从Java以编程方式调用任务:

 File buildFile = new File("build.xml"); Project p = new Project(); p.setUserProperty("ant.file", buildFile.getAbsolutePath()); p.init(); ProjectHelper helper = ProjectHelper.getProjectHelper(); p.addReference("ant.projectHelper", helper); helper.parse(p, buildFile); p.executeTarget(p.getDefaultTarget()); 

您可以使用Runtime.exec(String command, String[] envp, File dir)dir文件夹中执行ant deploy

PS执行ant,这是一个java程序,使用来自另一个java程序的批处理文件有点奇怪。 你可以像java类一样运行它…

在运行外部应用程序时,必须根据目标操作系统的规则进行操作。

在你的情况下,你想在Windows上运行2个命令,所以你必须说:

cd TheDir && ant

首先在命令行中尝试它。 然后使其工作运行此命令,前缀为cmd from java:

cmd /c cd TheDir && ant

或者,您可以使用纯Java解决方案。 使用ProcessBuilder而不是Runtime.exec() 。 ProcessBuilder允许您设置工作目录,因此您可以直接运行ant

最后一点。 实际上你根本不需要运行外部进程。 Ant是java应用程序。 您可以直接从您的应用程序运行其main()方法并指定所有需要的参数。