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

时间:2012-03-13 09:02:11

标签: java shell runtime.exec

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

cd %CMS_HOME%
ant deploy

现在可以制作一个.bat文件,但我认为它对两行无用, 是更容易!有人有什么想法吗?

4 个答案:

答案 0 :(得分:3)

调用任务programmatically from 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());

答案 1 :(得分:2)

将其放入.bat文件中。这不是无用的;这就是Runtime.exec的工作原理。

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

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

在您的情况下,您希望在Windows上运行2个命令,因此您必须说:

cd TheDir && ant

首先在命令行中尝试。然后使其工作从java:

运行带有前缀cmd的命令

cmd /c cd TheDir && ant

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

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