it-swarm.com.ru

JAVA_HOME на OSX с Eclipse и Maven

Я недавно настроил OSX-машину, и у меня возникают проблемы с тем, чтобы Maven запускал Java_HOME при работе внутри Eclipse.

До сих пор я сделал следующее:

  1. Установите Java_HOME в ~/.bash_profile с помощью export Java_HOME=$(/usr/libexec/Java_home)
  2. Укажите VM для Eclipse внутри Eclipse.ini для -vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Java
  3. Установите Java_HOME в /etc/mavenrc с помощью echo Java_HOME=\/usr/libexec/Java_home -v 1.7` | Sudo tee -a/etc/mavenrc`

Работая с CLI, все выглядит так, как ожидалось. Java -version печатает:

Java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

echo $Java_HOME печатает:

/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

mvn -v печатает:

Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
Maven home: /usr/local/Cellar/maven/3.1.1/libexec
Java version: 1.7.0_45, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9", Arch: "x86_64", family: "mac"

Запуск mvn install внутри проекта из CLI также работает. Однако сделать то же самое изнутри Eclipse не удается со следующим:

Failed to execute goal org.Apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (attach-javadocs) on project suppress-warnings: MavenReportException: Error while creating archive: Unable to find javadoc command: The environment variable Java_HOME is not correctly set.

В Eclipse > Preferences > Java > Installed JREs я вижу, что JDK 7 с тем же местоположением, которое указано в Java_HOME, установлено по умолчанию и также используется для моего проекта. Переключение между встроенной средой выполнения Maven или внешней установкой дает те же результаты.

Где или как мне установить Java_HOME, чтобы процесс Maven, запущенный из Eclipse, получил правильное местоположение Java_HOME?

12
user3054594

Проблема в том, что в Mac OSX переменные среды, определенные в .bashrc или .bash_profile, экспортируются только в терминальные среды. Пакетное приложение с графическим интерфейсом, такое как Eclipse, не видит их, и, следовательно, ни одна конфигурация запуска не выполняется из Eclipse.

Решение состоит в том, чтобы создать (если он не существует) или отредактировать файл /etc/launchd.conf и добавить в него следующую строку:

setenv Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

Конечно, изменено на ваше фактическое значение Java_HOME. (обратите внимание, что трюк, обычно используемый в .bash_profile с $(/usr/libexec/Java_home), не работает в launchd.conf - или, по крайней мере, я не смог заставить его работать)

После того, как вы это сделали, вам нужно будет перезагрузить компьютер. После перезагрузки конфигурации запуска M2E Maven смогут видеть переменную Java_HOME и работать правильно. 

13
Jeen Broekstra

То, что выше, больше не работает в YOSEMITE для графических приложений! Как Eclipse, или что-то началось с Spotlight. (.bash_profile, launchd.conf работает только для терминальных сессий.) Перед запуском Eclipse просто откройте окно терминала и введите следующую команду:

launchctl setenv Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(С вашим путем установки! Возможно, работает и с $ (/ usr/libexec/Java_home) вместо полного пути.)

Посмотрите всю превосходную статью о постоянном решении здесь: Установка переменных среды через launchd.conf больше не работает в OS X Yosemite?

3
Pálossy László

Я не могу комментировать ответ Джин Брукстра, потому что я новичок :-(

Его решение хорошо, его нужно только немного улучшить.

В /etc/launchd.conf достаточно поставить инструкцию

getenv Java_HOME

Затем в /etc/bashrc

export Java_HOME=`/usr/libexec/Java_home`

Затем снова войдите в систему (не нужно перезагружаться ;-), и Eclipse работает, как и ожидалось, w.r.t. Maven.

3
Roberto Pose

Eclipse дает вам возможность указывать переменные среды запуска. Сделай это там.

2
Rob

Это решение сработало лучше для меня: 

  • добавить файл/etc/mavenrc.
  • добавить Java = "/ path/to/your/jdk" в файл.
  • нет необходимости перезагружаться или выходить из системы, Maven сразу же принимает изменения.

Подробности смотрите в этом блоге .

2
Christopher Yang

В Eclipse проверьте, правильно ли выбран JRE для Maven для JDK.

В среде выполнения Java Java Runner (JRE) необходимо указать JDK (не JRE) , поскольку команда javadoc не включена в JRE. Поэтому Use Internal JRE не работает с maven attach-javadocs.

0
Florian Z.
  1. В вашем домашнем каталоге: (/ Users/{имя пользователя})

  2. nano .bash_profile и добавьте строку ниже:

    экспорт
    Java_home =/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Содержание/дома `

  3. Убедитесь, что путь "/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home"exist.

0
openmike

Найдите maven-javadoc-plugin artifactId в pom.xml, печатая ошибку, и добавьте Java.home в качестве конфигурации javadocExecutable: 

<plugin>
    ...
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
      <javadocExecutable>${Java.home}/../bin/javadoc</javadocExecutable>
    </configuration>
    ...
</plugin>

Причина: использование собственного значения «Java.home» в приложениях - лучший и самый простой подход, поскольку он устраняет зависимость от набора локальных переменных операционных систем, которые могут отличаться или не отличаться в другом контейнере.

0
feistyfawn

Я столкнулся с той же проблемой. Пробовал решение Роберта и Джина, но по какой-то причине оно не сработало. Поэтому очень простое решение, которое мне помогло, - добавить Java_HOME в качестве переменной среды в Eclipse. В maven-конфигурации проекта Eclipse добавьте Java_HOME в список переменных среды.

0
Sarfaraz Khan

Простой способ решить эту проблему, добавить следующий конфиг в pom.xml

<javadocExecutable>${Java.home}/../bin/javadoc</javadocExecutable>

полный код:

<plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
            <configuration>
                <show>private</show>
                <nohelp>true</nohelp>
                <aggregate>true</aggregate>
                <charset>UTF-8</charset>
                <encoding>UTF-8</encoding>
                <docencoding>UTF-8</docencoding>
                <javadocExecutable>${Java.home}/../bin/javadoc</javadocExecutable>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>javadoc</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
0
Hanley Tang

Вы, вероятно, ищете ~/.MacOSX/environment.plist

Добавьте новую строку в environment.plist, чтобы установить предпочитаемый Java_HOME, например.

Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home

установленные здесь envvars будут «видны» приложениями, включая Eclipse

0
bgausden