Как я могу изменить JAVA_HOME для муравья? - PullRequest
30 голосов
/ 21 февраля 2009

Я делаю Java-работу на сервере классов, где у меня нет root. Всякий раз, когда я пытаюсь скомпилировать, используя ant, он указывает на неправильный каталог (/usr/tomcat вместо /usr/tomcat/jre).

Одна из вещей, которую нам сказали сделать при настройке наших учетных записей, - добавить export JAVA_HOME=/usr/tomcat/jre в файл .bashrc. Я не знаю, должно ли это решить проблему, но, похоже, это не так.

Итак, как я могу изменить свойство JAVA_HOME для ant, но только когда я запускаю ant?

EDIT: echo $JAVA_HOME указывает на /usr/tomcat/jre echo $JAVA_HOME\bin указывает на /usr/tomcat/jrebin

Проблема в том, что когда я обычно запускаю ant, я получаю эту ошибку:

Unable to locate tools.jar. Expected to find it in /usr/tomcat/lib/tools.jar
Buildfile: build.xml

compile:
    [javac] Compiling 1 source file to /home/ejm244/build/classes

BUILD FAILED
/home/ejm244/build.xml:9: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.

Perhaps JAVA_HOME does not point to the JDK

Total time: 0 seconds

Ответы [ 14 ]

12 голосов
/ 21 февраля 2009

Вы можете создать свой собственный скрипт для запуска ant, например с именем ant.sh как:

#!/bin/sh
JAVA_HOME=</path/to/jdk>; export JAVA_HOME
ant $@

и затем запустите ваш скрипт.

$ chmod 755 ant.sh
$./ant.sh clean compile

или любой другой цели муравья, которую вы хотите запустить

6 голосов
/ 21 февраля 2009

JAVA_HOME должен указывать на то место, где установлен JDK, а не на JRE.

Итак, если вы введете ls $ JAVA_HOME, что вы увидите? если вы используете ls $ JAVA_HOME / bin / вы видите javac?

Если первое не работает, значит, у вас нет JAVA_HOME, указывающего на правильный каталог. Если второе не работает, вам нужно указать JAVA_HOME на JDK вместо JRE.

5 голосов
/ 15 марта 2010

На моем компьютере с Windows 7:

JAVA_HOME="C:\Program Files\Java\jdk1.6.0_18" 

не работает. Но установка:

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18

работал.

5 голосов
/ 22 февраля 2009

Глядя на скрипт оболочки для вызова ant, вполне возможно, что значение $ JAVA_HOME, установленное для вашей оболочки в .bashrc, может быть переопределено в файлах /etc/ant.conf, $ HOME / .ant / ant.conf и $ HOME / .antrc. Если вы выполните bash -x , он выдаст отладочную информацию, которая должна помочь вам отследить, где $ JAVA_HOME переопределяется.

3 голосов
/ 25 января 2015

Есть 2 способа изменить компилятор:

  • export JAVA_HOME=/path/to/jdk до запуска Ant.
  • Набор <javac exectuable="/path/to/javac">

Другой вариант - добавить соответствующий tools.jar в путь к классам, но этот путь обычно выбирается, если Ant запускается из других инструментов, таких как Maven.

Подробнее об этих (или других) вариантах изменения компилятора Java в Ant см., Например, эту статью .

3 голосов
/ 01 апреля 2012

Хотя переменная среды JAVA_HOME установлена ​​правильно, ant может использовать настроенную JRE в каждом build.xml или любых файлах сборки.

Чтобы проверить, какую версию JRE использует муравей, щелкните правой кнопкой мыши файл сборки -> выберите муравейник сборки, который отображает подробную информацию о задачах на выбор, и т. Д., Выберите JRE, который вы хотите использовать.

Рекомендуется использовать настройки уровня проекта или только на уровне рабочей области.

3 голосов
/ 25 января 2012

Установите переменную env: JAVACMD - полный путь к исполняемому файлу Java. Используйте это для вызова другой JVM, отличной от JAVA_HOME / bin / java (.exe).

Ссылка: http://ant.apache.org/manual/running.html

1 голос
/ 06 октября 2010

Установите JRE в проекте (свойства проекта -> Путь сборки Java-> Библиотеки, обычно последняя запись) или глобальное значение по умолчанию в настройках (Java-> Установленные JRE) для JDK, а не JRE.

1 голос
/ 22 февраля 2009

При использовании Bash просто попробуйте это:

$ export JAVA_HOME=/usr/tomcat/jre
1 голос
/ 22 февраля 2009

JAVA_HOME должен указывать на дом JDK, если вы пытаетесь скомпилировать код. Проверьте, существует ли '/ usr / tomcat / jre / bin / javac'. Я сомневаюсь, что это так.

Если у вас нет JDK, то вы можете обойти его, получив библиотеку ECJ (eclipse compiler), поместив ее в '~ / .ant / lib' и добавив системное свойство в командную строку для используйте этот компилятор - обратитесь к руководству Ant за подробностями.

http://ant.apache.org/

...