最近OSXマシンをセットアップしましたが、Eclipse内で実行しているときにMavenがJava_HOMEを取得するのに問題があります。
私はこれまでに次のことを行いました。
export Java_HOME=$(/usr/libexec/Java_home)
を使用して〜/ .bash_profileのJava_HOMEを設定します-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Java
に指定します/etc/mavenrc
/usr/libexec/Java_home -v1.7`を使用してecho Java_HOME=\
にJava_HOMEを設定します| 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"
CLIからプロジェクト内でmvn install
を実行することも同様に機能します。ただし、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
で、Java_HOME
で指定されたのと同じ場所にあるJDK7がデフォルトとして設定されており、プロジェクトでも使用されていることがわかります。組み込みMavenランタイムと外部インストールを切り替えても同じ結果が得られます。
Eclipse内から開始されたMavenプロセスが正しいJava_HOME
の場所を取得するように、どこで、またはどのようにJava_HOME
を設定する必要がありますか?
問題は、Mac OSXでは、_.bashrc
_または_.bash_profile
_で定義された環境変数がターミナル環境にのみエクスポートされることです。 EclipseのようなバンドルされたGUIアプリはそれらを認識しないため、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
_変数を確認し、正しく実行できるようになります。
上記のことは、YOSEMITE for GRAPHICAL APPLICATIONSでは機能しなくなりました! 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では機能しなくなりましたか?
私は初心者なので、JeenBroekstraの回答にコメントすることはできません:-(
彼の解決策は良いです、それは少しだけ改善される必要があります。
/etc/launchd.conf
命令を入れるだけで十分です
getenv Java_HOME
次に、/etc/bashrc
export Java_HOME=`/usr/libexec/Java_home`
次に、再ログインし(再起動する必要はありません;-)、Eclipseは期待どおりに機能します。 Maven。
Eclipseには、起動環境変数を指定する機能があります。そこでやってください。
このソリューションは私にとって最適でした:
詳細については、こちらをご覧ください ブログ 。
この問題を解決する簡単な方法は、次の設定を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>
Eclipseで、MavenのJREがJDKに対して正しく選択されていることを確認します。
MavenランナーJavaランタイム(JRE)はJDK(JREではない)を指定する必要があります。javadocコマンドはJREに含まれていないためです。したがって、Use Internal JRE
はmavenattach-javadocsでは機能しません。
ホームディレクトリ:(/ Users/{username})
nano .bash_profileと、以下の行を追加します。
書き出す
Java_HOME =/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home`
パス「/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home」が存在することを確認してください。
エラーを出力するpom.xmlでmaven-javadoc-pluginartifactIdを見つけ、java.homeをjavadocExecutable構成として追加します。
<plugin>
...
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<javadocExecutable>${Java.home}/../bin/javadoc</javadocExecutable>
</configuration>
...
</plugin>
理由:アプリケーション独自の「Java.home」値を使用することは、別のコンテナーで異なる場合と異なる場合があるオペレーティングシステムのローカル変数セットへの依存を取り除くため、最良かつ最も簡単なアプローチです
私も同じ問題に直面しました。 RobertとJeenのソリューションを試しましたが、何らかの理由で機能しませんでした。そのため、Eclipseの環境変数としてJava_HOMEを追加するのが非常に簡単なソリューションでした。EclipseプロジェクトのMaven構成で、環境変数リストにJava_HOMEを追加します。
あなたはおそらく〜/ .MacOSX /environment.plistを探しています
新しい行をenvironment.plistに追加して、好みのJava_HOMEを設定します。
Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home
ここで設定されたenvvarsは、Eclipseなどのアプリケーションによって「表示」されます。