4

Cygwinでこの問題が発生しました。Java 1.6 と 1.7 がインストールされています。Java 1.7 で Maven 3.0.4 を使用したいのですが、Java 1.6 をアンインストールしたくありません。私の JAVA_HOME は次のようになります。

C:\Program Files\Java\jdk1.7.0_09

Cygwin で java -version を実行すると、次のようになります。

java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)

cmd.exe で同じコマンドを実行すると、次のようになります。

java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

誰もこれを解決する方法を知っていますか?

4

1 に答える 1

3

ここには 2 つの個別の質問があります。


java -version最初の質問は、Cygwin と従来の Windows コマンド インタープリターで異なる Java インストールを見つける理由です。

答えは、Cygwin 環境と Windows 環境$PATH%PATH%それぞれ と の値が異なる可能性が高いです。Cygwin で Java 7 を実行する場合java -versionは、Cygwin$PATHに適切な構文で Java 7 の bin ディレクトリが含まれていることを確認する必要があります。


2 番目の質問は、mvnCygwin で Java 7 を使用するコマンドを取得する方法です。

答えはそれほど単純ではありません。

  • 設定$PATHすると問題が解決する場合があります。

  • Maven のインストール ドキュメントによると、mvnラッパー スクリプトは$JAVA_HOME(Cygwin) シェルの環境変数を使用して、使用する Java を決定する必要があります。

  • 実際に何が起こっているのかを知る方法は、ラッパー スクリプトを見て、実際に何をしているのかを確認することです。また、スクリプトを読むのが難しすぎる場合は、スクリプトを「ハッキング」してset -vx. これにより、スクリプトのどの行が読み取られ、どのコマンドが実行されているかがわかります。

  • 最後に、POM ファイルは、ビルドを実行する JVM とは関係なく、ビルドのソース レベルとターゲット レベルに影響を与える可能性があります。

于 2013-02-19T11:26:38.783 に答える