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:
export Java_HOME=$(/usr/libexec/Java_home)
-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Java
an./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?
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.
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?
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.
Mit Eclipse können Sie Startumgebungsvariablen angeben. Mach es dort.
Diese Lösung hat für mich am besten funktioniert:
Weitere Details finden Sie in diesem Blog .
Ü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.
In Ihrem Heimatverzeichnis: (/ Benutzer/{Benutzername})
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`
Stellen Sie sicher, dass der Pfad "/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home" vorhanden ist.
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
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.
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>
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"