我是蚂蚁的新手,我不太清楚为什么 运行ant时出现以下错误:无法找到目标java:请将JAVA_HOME设置为其位置。我已粘贴下面的相关源代码。从我所看到的,目标-check-langtools.jdk.home正在执行。但是因为它依赖于-def-check,所以会被执行。当调用-check-langtools.jdk.home时,属性(名称,属性,标记)是否被传递到-def-check?如果是这样 - 失败必须发生在未设置属性的情况下(即isset必须返回false)。如果能够打印出值(即JAVA_HOME),我不明白该属性是如何设置的。
背景:尝试从OpenJDK构建langtools
<target name="-def-check">
<macrodef name="check">
<attribute name="name"/>
<attribute name="property"/>
<attribute name="marker" default=""/>
<sequential>
<fail message="Cannot locate @{name}: please set @{property} to its location">
<condition>
<not>
<isset property="@{property}"/>
</not>
</condition>
</fail>
<fail message="@{name} is not installed in ${@{property}}">
<condition>
<and>
<not>
<equals arg1="@{marker}" arg2=""/>
</not>
<not>
<available file="${@{property}}/@{marker}"/>
</not>
</and>
</condition>
</fail>
</sequential>
</macrodef>
</target>
<target name="-check-langtools.jdk.home" depends="-def-check">
<!-- <check name="target java" property="langtools.jdk.home" marker="${java.marker}"/> -->
<check name="target java" property="JAVA_HOME" marker="${java.marker}"/>
</target>
<target name="-check-jtreg.home" depends="-def-check">
<check name="jtreg" property="jtreg.home" marker="lib/jtreg.jar"/>
</target>
答案 0 :(得分:0)
这个问题有点像金发女郎,但我最终以错误的方式解决了这个问题,但是如果有人是Ant的新手并希望做同样的事情,我会在这里发布答案。要构建javac的langtools部分,他们需要做的是在包含的单独build.properties文件中设置langtools.jdk.home = path_to_jdk_installation。
(例如langtools.jdk.home = / Library / Java / JavaVirtualMachines / jdk1.7.0_79.jdk / Contents / Home)