wake-up-neo.com

JAVA_HOME unter OSX mit Eclipse und Maven

Ich habe vor kurzem eine OSX-Maschine eingerichtet, und ich habe Schwierigkeiten, Maven dazu zu bringen, Java_HOME abzurufen, wenn er in Eclipse läuft.

Ich habe bisher folgendes getan:

  1. Setze Java_HOME in ~/.bash_profile mit export Java_HOME=$(/usr/libexec/Java_home)
  2. Geben Sie VM für Eclipse in der Eclipse.ini an -vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Java an.
  3. Setzen Sie Java_HOME in /etc/mavenrc mit echo Java_HOME=\/usr/libexec/Java_home -v 1.7` | Sudo tee -a/etc/mavenrc`

Wenn Sie von der CLI aus arbeiten, scheint alles wie erwartet. Java -version druckt:

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 druckt:

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

mvn -v druckt:

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"

Das Ausführen von mvn install innerhalb eines Projekts über die CLI funktioniert ebenfalls. Das Gleiche von Eclipse aus schlägt jedoch mit folgendem Fehler fehl:

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.

In Eclipse > Preferences > Java > Installed JREs sehe ich, dass JDK 7 mit dem gleichen Ort wie in Java_HOME angegeben als Standard festgelegt ist und auch für mein Projekt verwendet wird. Das Wechseln zwischen der eingebetteten Maven-Laufzeit oder der externen Installation führt zu den gleichen Ergebnissen.

Wo oder wie muss ich Java_HOME so einstellen, dass ein Maven-Prozess aus Eclipse heraus den richtigen Java_HOME-Speicherort erhält?

12
user3054594

Das Problem ist, dass unter Mac OSX die in .bashrc oder .bash_profile definierten Umgebungsvariablen nur in Terminalumgebungen exportiert werden. Eine gebündelte GUI-App wie Eclipse sieht sie nicht und folglich auch keine von Eclipse ausgeführte Laufkonfiguration.

Die Lösung besteht darin, eine Datei /etc/launchd.conf zu erstellen (falls noch nicht vorhanden) oder sie zu bearbeiten und die folgende Zeile hinzuzufügen:

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

Natürlich geändert an Ihren tatsächlichen Java_HOME-Wert. (Beachten Sie, dass der in .bash_profile mit $(/usr/libexec/Java_home) häufig verwendete Trick nicht in launchd.conf funktioniert - oder zumindest konnte ich ihn nicht zum Laufen bringen.)

Nachdem Sie dies getan haben, müssen Sie den Computer neu starten. Nach dem Neustart können die M2E Maven-Laufkonfigurationen die Variable Java_HOME sehen und korrekt ausführen.

13
Jeen Broekstra

Das obige funktioniert in YOSEMITE nicht mehr für GRAFISCHE ANWENDUNGEN! Wie Eclipse oder alles begann mit Spotlight. (.bash_profile, launchd.conf funktioniert nur für Terminalsitzungen.) Bevor Sie Eclipse starten, öffnen Sie einfach ein Terminalfenster und geben den folgenden Befehl aus:

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

(Mit Ihrem Installationspfad! Funktioniert möglicherweise auch mit $ (/ usr/libexec/Java_home) anstelle des vollständigen Pfads.)

Sehen Sie sich hier den gesamten ausgezeichneten Artikel über die dauerhafte Lösung an: Das Setzen von Umgebungsvariablen über launchd.conf funktioniert in OS X Yosemite nicht mehr?

3

Ich kann Jeen Broekstras Antwort nicht kommentieren, weil ich ein Anfänger bin :-(

Seine Lösung ist gut, sie muss nur ein wenig verbessert werden.

In /etc/launchd.conf genügt die Anweisung

getenv Java_HOME

Dann in /etc/bashrc

export Java_HOME=`/usr/libexec/Java_home`

Melden Sie sich dann erneut an (es ist kein Neustart erforderlich ;-) und Eclipse funktioniert wie erwartet. Maven.

3
Roberto Pose

Mit Eclipse können Sie Startumgebungsvariablen angeben. Mach es dort.

2
Rob

Diese Lösung hat für mich am besten funktioniert:

  • fügen Sie die Datei/etc/mavenrc hinzu.
  • fügen Sie Java = "/ Pfad/zu/Ihre/Jdk" in der Datei hinzu.
  • kein Neustart oder Abmelden, Maven übernimmt die Änderung sofort.

Weitere Details finden Sie in diesem Blog .

2

Überprüfen Sie in Eclipse, ob die JRE für Maven für ein JDK richtig ausgewählt ist.

Die Maven Runner Java Runtime (JRE) muss ein JDK (keine JRE) angeben, da der Befehl javadoc nicht in JRE enthalten ist. Daher funktioniert Use Internal JRE nicht mit maven attach-javadocs.

0
Florian Z.
  1. In Ihrem Heimatverzeichnis: (/ Benutzer/{Benutzername})

  2. nano .bash_profile und fügen Sie die folgende Zeile hinzu:

    export
    Java_HOME =/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home`

  3. Stellen Sie sicher, dass der Pfad "/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home" vorhanden ist.

0
openmike

Suchen Sie die maven-javadoc-plugin artifactId in der Datei pom.xml, die den Fehler ausgibt, und fügen Sie das Java.home als javadocExecutable-Konfiguration hinzu:

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

Grund: Die Verwendung des eigenen 'Java.home'-Werts der Anwendung ist der beste und einfachste Ansatz, da auf lokale Variablen der Betriebssysteme angewiesene Abhängigkeiten entfallen, die sich in einem anderen Container unterscheiden können

0
feistyfawn

Ich stand vor demselben Problem. Ich habe die Lösung von Robert und Jeen zwar ausprobiert, aber aus irgendeinem Grund hat es nicht funktioniert. Eine sehr einfache Lösung, die für mich funktionierte, war das Hinzufügen von Java_HOME als Umgebungsvariable in Eclipse.

0
Sarfaraz Khan

Fügen Sie pom.xml die folgende Konfiguration hinzu, um dieses Problem auf einfache Weise zu lösen

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

vollständiger Code:

<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

Sie suchen wahrscheinlich nach ~/.MacOSX/environment.plist

Fügen Sie eine neue Zeile zu environment.plist hinzu, um Ihr bevorzugtes Java_HOME festzulegen, z.

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

hier eingestellte Envvars werden von Anwendungen einschließlich Eclipse "gesehen"

0
bgausden