【发布时间】:2015-11-20 19:45:43
【问题描述】:
我正在尝试自动化一个流程,其中一个需要进行 ant 构建。我已经设置了所有的环境变量。直接在 cmd 中输入命令可以:
我的 build.xml 有一些如下属性:
<property name="java.home" value="${env.JAVA_HOME}"/>
<property name="java.compiler.path" value="${JAVA_HOME}\bin\javac"/>
<echo> ${java.home} </echo>
<echo> ${java.compiler.path} </echo>
在 cmd 上调用“ant”会回显 JDK 的目录。但是通过ProcessBuilder调用ant
CommandUtils.execute("\"c:\\Program Files (x86)\\Ant\\bin\\ant\"");
//inside execute() { pb = new ProcessBuilder("cmd", "/c", command);....}
将逐字回显 ${java.home} 和 ${java.compiler.path}。 是否可以进行任何更改以指向 java 路径,以便 ProcessBuilder 能够识别 java 路径?
【问题讨论】:
-
哪里说
ProcessBuilder替代了环境变量? -
主要问题呢?当我做蚂蚁时,我认为这不是 build.xml 问题的原因。 ${JAVA_HOME} 回显正确的目录,但 ${env.JAVA_HOME} 回显 ${env.JAVA_HOME}。所以我根本无法通过 ProcessBuilder 运行 ant build?
-
那是因为你的 java home 指向 JRE 而不是 JDK,所以在类路径中找不到编译器(在 tools.jar 中)
-
我编辑了这个问题。 ProcessBuilder 指向一个完全不同的 lib 目录。从终端运行ant仍然指向jdk1.6.0_21的JRE,但它构建成功
-
主要问题正是为什么您期待无证行为。这里没有其他问题需要解决。您提到的课程按记录工作。
标签: java ant processbuilder java-home