Ant属性设置不正确?

时间:2016-04-27 07:24:22

标签: java ant openjdk

我是蚂蚁的新手,我不太清楚为什么 运行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>

1 个答案:

答案 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)