2016-04-27 2 views
0

Я не очень разбираюсь в муравьях, и я не совсем уверен, почему Я получаю следующую ошибку, когда я запускаю муравей: Не могу найти целевую java: пожалуйста, установите JAVA_HOME в ее местоположение. Я вставил соответствующий исходный код ниже. Из того, что я вижу, запускается target -check-langtools.jdk.home. Но поскольку это зависит от -def-check, это выполняется. Передаются ли атрибуты (имя, свойство, маркер) в -def-check при вызове -check-langtools.jdk.home? Если это так - сбой должен происходить при условии, когда свойство не установлено (например, isset должен возвращать false). Я не понимаю, как свойство не устанавливается, если оно способно распечатать значение (т. Е. JAVA_HOME).Отсутствует свойство Ant?

фона: Попытка построить langtools от OpenJDK

<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, и хочет сделать то же самое. Чтобы создать langtools часть javac, то, что им нужно сделать, это установить langtools.jdk.home = path_to_jdk_installation в отдельный файл build.properties, который включен.

(например. Langtools.jdk.home =/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Содержание/Home)

+0

Не рекомендуется напрямую изменять файл 'build.properties'. Вы можете передать эту опцию в качестве флага: 'ant -Dlangtools.jdk.home =/usr/lib/jvm/java-8-openjdk-amd64'. – barik

Смежные вопросы