web-dev-qa-db-ja.com

EclipseとMavenを使用したOSX上のJAVA_HOME

最近OSXマシンをセットアップしましたが、Eclipse内で実行しているときにMavenがJava_HOMEを取得するのに問題があります。

私はこれまでに次のことを行いました。

  1. export Java_HOME=$(/usr/libexec/Java_home)を使用して〜/ .bash_profileのJava_HOMEを設定します
  2. Eclipse.ini内のEclipseのVM)を-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Javaに指定します
  3. /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を設定する必要がありますか?

12
user3054594

問題は、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_変数を確認し、正しく実行できるようになります。

13
Jeen Broekstra

上記のことは、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では機能しなくなりましたか?

3

私は初心者なので、JeenBroekstraの回答にコメントすることはできません:-(

彼の解決策は良いです、それは少しだけ改善される必要があります。

/etc/launchd.conf命令を入れるだけで十分です

getenv Java_HOME

次に、/etc/bashrc

export Java_HOME=`/usr/libexec/Java_home`

次に、再ログインし(再起動する必要はありません;-)、Eclipseは期待どおりに機能します。 Maven。

3
Roberto Pose

Eclipseには、起動環境変数を指定する機能があります。そこでやってください。

2
Rob

このソリューションは私にとって最適でした:

  • / etc/mavenrcファイルを追加します。
  • ファイルにJava = "/ path/to/your/jdk"を追加します。
  • 再起動したりログアウトしたりする必要はありません。Mavenはすぐに変更を取得します。

詳細については、こちらをご覧ください ブログ

2

この問題を解決する簡単な方法は、次の設定を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>
1
Hanley Tang

Eclipseで、MavenのJREがJDKに対して正しく選択されていることを確認します。

MavenランナーJavaランタイム(JRE)はJDK(JREではない)を指定する必要があります。javadocコマンドはJREに含まれていないためです。したがって、Use Internal JREはmavenattach-javadocsでは機能しません。

0
Florian Z.
  1. ホームディレクトリ:(/ Users/{username})

  2. nano .bash_profileと、以下の行を追加します。

    書き出す
    Java_HOME =/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home`

  3. パス「/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home」が存在することを確認してください。

0
openmike

エラーを出力する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」値を使用することは、別のコンテナーで異なる場合と異なる場合があるオペレーティングシステムのローカル変数セットへの依存を取り除くため、最良かつ最も簡単なアプローチです

0
feistyfawn

私も同じ問題に直面しました。 RobertとJeenのソリューションを試しましたが、何らかの理由で機能しませんでした。そのため、Eclipseの環境変数としてJava_HOMEを追加するのが非常に簡単なソリューションでした。EclipseプロジェクトのMaven構成で、環境変数リストにJava_HOMEを追加します。

0
Sarfaraz Khan

あなたはおそらく〜/ .MacOSX /environment.plistを探しています

新しい行をenvironment.plistに追加して、好みのJava_HOMEを設定します。

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

ここで設定されたenvvarsは、Eclipseなどのアプリケーションによって「表示」されます。

0
bgausden