2016-04-27 53 views
0

我對螞蟻比較陌生,我不太確定爲什麼 我在運行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> 
+0

取決於意味着'運行此運行me' – BevynQ

+0

所以後來我的問題是前:運行的第一件事是什麼(「無法找到@ {名稱}:請將@ {屬性}設置爲其位置」)知道運行時設置的事情。例如無法找到目標java:請將@ {property}設置爲其位置,其中property = JAVA_HOME – user3601148

+0

isset正在尋找使用'' – BevynQ

回答

0

這個問題問得有點金髮女郎,但我最終處理這個問題的錯誤的方式,但我會在這裏,如果有人張貼了答案對Ant來說是新的,並且希望做同樣的事情。要構建javac的langtools部分,他們需要做的是將langtools.jdk.home = path_to_jdk_installation設置爲包含在一個單獨的build.properties文件中。

(如langtools.jdk.home = /圖書館/的Java/JavaVirtualMachines/jdk1.7.0_79.jdk /內容/首頁)

+0

不建議直接更改'build.properties'文件。您可以將此選項作爲標誌傳遞:'ant -Dlangtools.jdk.home =/usr/lib/jvm/java-8-openjdk-amd64'。 – barik

相關問題