Почему maven игнорирует мой JAVA_HOME? - PullRequest
3 голосов
/ 28 июля 2010

Это то, что я получаю, когда из CruiseControl выполняется mvn:

Unable to locate the Javac Compiler in:
  /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

В то же время запуск из командной строки дает правильный результат.Почему mvn входит в это tools.jar?Почему он игнорирует мой JAVA_HOME?И как я могу это исправить?

Я не знаю, каковы значения JAVA_HOME/PATH, когда mvn запускается из CC.Мне бы очень хотелось получить эту информацию, но я не знаю как.Сам CC запускается от пользователя cc и env для этого пользователя дает мне (это CentOS 5.4):

JAVA_HOME=/usr/java/default
PATH=/usr/local/maven/bin:/usr/local/bin:/bin:/usr/bin:/home/cc/bin

Ответы [ 6 ]

11 голосов
/ 13 сентября 2011

У меня была та же проблема, и простая переустановка Java JDK решила ее для меня:

apt-get install openjdk-6-jdk

2 голосов
/ 28 июля 2010

Почему mvn входит в этот tools.jar?

Поскольку tools.jar содержит класс com.sun.tools.javac.Main, который используется для программного вызова компилятора javac.

Почему игнорируется мой JAVA_HOME

Это "интересная" часть (так как она работает вне CC). Вы используете CC с выделенным пользователем? Если да, хорошо ли определен JAVA_HOME для этого пользователя? Каков выход

echo $JAVA_HOME -or-
echo $PATH
1 голос
/ 28 июля 2010

Предполагая, что у вас есть Linux-машина.

  1. Посмотрите на /usr/bin/java, это символическая ссылка.Посмотрите, где находится цель этой символической ссылки (в моем случае цель находится в этом месте /etc/alternatives/java)
  2. /etc/alternatives/java также является символической ссылкой.Создайте новую символическую ссылку на «правильную» JVM (например, Sun's JVM)
  3. Замените /etc/alternatives/java на вновь созданную символическую ссылку.

Это работает для распространения Ubuntu.Существует автоматический способ, как это сделать, но я действительно забыл это: D

0 голосов
/ 23 июля 2014

Я знаю, что это далеко устаревший вопрос, но в итоге я нашел ту же проблему. Так что это решение также работает отлично: просто поместите "fork = 'yes'" в задачу "javac". После того, как это задание javac станет выполнять настройку JAVA_HOME.

0 голосов
/ 15 мая 2013

Мне пришлось указать на установки Oracle Java 7 в Ubuntu. Gradle (1.6), похоже, вообще не любит символические ссылки. Поэтому я отредактировал файл /opt/gradle/gradle-1.6/bin/gradle, чтобы экспортировать JAVA_HOME из / usr / lib / jvm / java-7-oracle вверху скрипта. Теперь он счастлив.

0 голосов
/ 22 марта 2012

введите следующую строку для версии Sun

sudo update-java-alternatives -s java-6-sun
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...