Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ProcessBuilder无法识别Java_主路径_Java_Ant_Processbuilder_Java Home - Fatal编程技术网

Java ProcessBuilder无法识别Java_主路径

Java ProcessBuilder无法识别Java_主路径,java,ant,processbuilder,java-home,Java,Ant,Processbuilder,Java Home,我正在尝试自动化一个过程,其中一个过程需要进行ant构建。我已经设置了所有的环境变量。将命令直接输入cmd works: my build.xml具有以下属性: <property name="java.home" value="${env.JAVA_HOME}"/> <property name="java.compiler.path" value="${JAVA_HOME}\bin\javac"/> <echo> ${java.home} </ech

我正在尝试自动化一个过程,其中一个过程需要进行ant构建。我已经设置了所有的环境变量。将命令直接输入cmd works:

my 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>
将按字面意思回显${java.home}和${java.compiler.path}。
是否可以对java路径进行任何更改,以便ProcessBuilder能够识别java路径?

用%替换环境变量将不起作用。改用System.getenv()中的值


对于ant错误:在类路径中需要一个编译器。Tools.jar不包括在JRE中,只包括在JDK中

它说
ProcessBuilder
在哪里替代了环境变量?主要问题是什么?我不认为这是执行ant时build.xml出现问题的原因${JAVA_HOME}回显正确的目录,但${env.JAVA_HOME}回显${env.JAVA_HOME}。所以我根本无法通过ProcessBuilder运行ant build?这是因为您的java主页指向JRE而不是JDK,所以在我编辑问题的类路径上找不到编译器(在tools.jar中)。ProcessBuilder指向一个完全不同的库目录。从终端运行ant仍然指向jdk1.6.0Ø21的JRE,但它构建成功。主要问题正是为什么您希望出现未记录的行为。这里没有其他问题需要解决。你提到的那门课是有据可查的。主要问题是什么?我不认为这是执行ant时build.xml出现问题的原因${JAVA_HOME}回显正确的目录,但${env.JAVA_HOME}回显${env.JAVA_HOME}。所以我根本不能通过ProcessBuilder运行ant构建?
 CommandUtils.execute("\"c:\\Program Files (x86)\\Ant\\bin\\ant\"");
 //inside execute() { pb = new ProcessBuilder("cmd", "/c", command);....}