我對螞蟻比較陌生,我不太確定爲什麼 我在運行ant時出現以下錯誤:無法找到目標java:請將JAVA_HOME設置爲其位置。我粘貼了下面的相關源代碼。從我所看到的,目標-check-langtools.jdk.home正在執行。但是因爲它取決於-def-check,所以會被執行。當-check-langtools.jdk.home被調用時,屬性(name,property,marker)是否會傳入-def-check?如果是這樣 - 在屬性未被設置的情況下(即,設置必須返回錯誤),失敗必定發生。如果能夠打印出該值(即JAVA_HOME),我不明白屬性是如何設置的。Ant屬性設置不正確?
背景:試圖從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>
取決於意味着'運行此運行me' – BevynQ
所以後來我的問題是前:運行的第一件事是什麼(「無法找到@ {名稱}:請將@ {屬性}設置爲其位置」)知道運行時設置的事情。例如無法找到目標java:請將@ {property}設置爲其位置,其中property = JAVA_HOME – user3601148
isset正在尋找使用'' –
BevynQ