WindowsにMavenをインストールできない:「JAVA_HOMEが無効なディレクトリに設定されています」


98

Mavenのチュートリアルに従って手紙を書いたのですが、WindowsにMavenをインストールできません。

コマンドプロンプトで次のコマンドを実行すると、

E:\Documents and Settings\zach>mvn --version

私は得ます:

'mvn' is not recognized as an internal or external command, operable program or batch file.

私はmavenインストールフォルダーに移動して実行しmvn --version、以下を取得しました。

E:\java resources\apache-maven-2.2.0\bin>mvn --version
ERROR: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "E:\Sun\SDK\jdk\bin"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation

しかし、実行するjava -versionと、次のようになります。

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode)

だから私はJavaをインストールしています。誰もが問題が何であるか知っていますか?

回答:


172

問題はあなたの道に関係しています。

  1. ディレクトリ「E:\ java resources \ apache-maven-2.2.0 \ bin」がコマンド検索パス上にあることを確認してください。

  2. JAVA_HOME変数がJavaインストールのホームディレクトリを参照していることを確認してください。「E:\ Sun \ SDK \ jdk \ bin」からJavaを実行している場合、JAVA_HOME変数は「E:\ Sun \ SDK \ jdk」を指す必要があります。

    注意:JAVA_HOMEは「\ bin」で終わらないでください1

  3. JAVA_HOME変数にセミコロンを入れていないことを確認してください2

    注意:JAVA_HOMEは、セミコロンで区切られたディレクトリ名の「パスのような」リストではなく、単一のディレクトリ名である必要があります。

また、キーパス名のスペースに関するWindows上Mavenの指示でこのアドバイスを無視した場合、問題が発生する可能性があることに注意してください。

「Mavenは、多くのクロスプラットフォームツールと同様に、重要なパス名にスペース文字があると問題が発生する可能性があります。」

「Java SDKをインストールする必要があります(たとえば、Oracleのダウンロードサイトから)。また、スペースのないパス名( c:\ j2se1.6など)にインストールする必要があります。」

「Mavenディストリビューションをアンパックする必要があります。ソースコードの途中でアンパックしないでください。パスにスペースのない場所を選び、そこでアンパックしてください。」

これに対する簡単な解決策は、パスにスペースが入らないように、JavaまたはMavenを別の場所に再インストールすることです。


1 -....インストール場所の名前をめちゃくちゃに選択しない限り。

2-どうやら、Windowsパスの問題に対する一般的な「ブードゥー」解決策は、最後にセミコロンを打つことです。一般的にはお勧めできません。ここでは絶対に機能しません。


29

エラー:JAVA_HOMEが無効なディレクトリに設定されています。JAVA_HOME = "E:\ Sun \ SDK \ jdk \ bin" Javaインストールの場所と一致するように、環境内のJAVA_HOME変数を設定してください

JAVA_HOMEに設定する必要がありますE:\Sun\SDK\jdkPATHを含むように設定する必要があります%JAVA_HOME%\bin


13

Grailsのインストールでこの問題に遭遇しました。

問題は私のJAVA_HOMEc:\sun\jdk\あり、PATHに%JAVA_HOME%bin

私はそれを次のように変更しました: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

それはその後働きました。


10

私は同じ問題に直面していて、JAVA_HOMEを更新しただけでうまくいきました。

以前は次のようでした:C:\ Program Files \ Java \ jdk1.6.0_45 \ bin \ binを削除しただけで、私にとってはうまくいきました。


4

現在の職場でのセキュリティ制限のため、WindowsベースのPCで環境変数を設定できませんでした。

私の回避策は、mvn.batファイルを%M2%からC:\ WINNTにコピーし、以下をバッチファイルの先頭に追加することでした。

@REM Needed as unable to set env variables on my desktop PC.

set MAVEN_OPTS=-Xms256m -Xmx1024m
set M2_HOME=C:\apache-maven-3.0.4
set M2=%M2_HOME%\bin
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_15
set PATH=%JAVA_HOME%\bin;%M2%;%PATH%

最も良い解決策ではありませんが、うまくいきます。誰かが標準のenv変数をシステムに設定できない他の方法または回避策を持っている場合、私はそれらの応答を歓迎します。


3

私は同じ問題を抱えていましたが、環境変数がすべて設定されていたため、上記の回答のいずれもそれを修正しませんでした。Javaを再インストールしたところです。

うまくいったのは

  1. に移動してファイルC:\path\to\apache-maven-3.0.4\binを開きmvn.batます。
  2. このような行を見つけます @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. 正しいパスに修正してください

これがWindows固有かどうかはわかりませんが、誰かを助けるかもしれません!


2

多くの試みが失敗した後、私は解決策を見つけました

「;」でした 設定した新しい変数の最後に常に置くJAVA_HOMEの最後。だから取り除く;;

JAVA_HOMEもユーザー変数に設定します(「;」コースなし)


1
「設定した各変数の最後に常に置く...」 -なぜそうするのでしょうか。
スティーブンC

1

たとえば、binディレクトリなしでJAVA_HOMEまたはMAVEN_HOMEを設定する必要があります。-JAVA_HOME = C:\ Program Files(x86)\ Java \ jdk1.7.0_45-MAVEN_HOME = C:\ Program Files(x86)\ apache-maven-3.1.1 now path = .....;%MAVEN_HOME%\ bin;%JAVA_HOME%\ bin正しく機能しています


1

Windowsでは、パスの空白が正しく認識されないことがある

パスに問題があり、パスが

c:\Program Files\....

次のような古いDOS形式に変更してみてください

"C:\Progra~1\...

を使用dir /xして正しい構文を確認できます(3列目)

C:\>dir /x ... 11.01.2008 15:47 <DIR> DOCUME~1 Documents and Settings 01.12.2006 09:10 <DIR> MYPROJ~1 My Projects 21.01.2011 14:08 <DIR> PROGRA~1 Program Files ...

私のPCではJAVA_HOMEは(そしてそれは動作します)

"C:\Progra~1\Java\jdk1.8.0_121"

Windows 10でテスト済み


0

JAVA_HOMEは次のようになりますC:\ PROGRA〜1 \ Java \ jdk

これがうまくいくことを願っています!


0

これは古い投稿のようですが、この問題がどのように修正されたかを共有したいと思います。

管理者アクセス権を持たないユーザーがコマンドプロンプトを開くと、ユーザー特権で実行されます。つまり、C:\ Users \のようなパスがある可能性があります。

したがって、C:\ Users \ XYZ> mvn --versionを試行すると、実際には、環境変数のシステム変数ではなく、ユーザー変数からJAVA_HOMEパスが検索されます。

したがって、これを修正するには、ユーザー変数にJAVA_HOMEの環境変数を作成する必要があります。

これが誰かを助けることを願っています。


Ermmm ...ユーザーの環境変数は、Windowsのシステム環境変数を上書きします。同じ名前のシステム環境変数とユーザー環境変数がある場合、ユーザー変数が「優先」され、アプリケーションがそれを認識します。
スティーブンC

0

Eclipseを実行し、Mavenも実行するには、2つのパス変数をjdk1.7_x_x_xの場所とjdk1.7_x_x_ \ binに保存する必要があります。Windowsを使用している場合、環境変数を使用しているときに、次のことを行います。

1)JAVA_HOMEというUSER変数を作成します。これをJAVAファイルの場所にポイントします。例: "C:\ Program Files \ Java \ jdk1.7.0_51"(引用符を削除)

2)PATHの下で、%JAVA_HOME%をPATHに追加します。これにより、手順1のファイルの場所がPATHに追加されます。これはMAVENに適しています

3)Eclipseを使用している場合は、「C:\ Program Files \ Java \ jdk1.7.0_51 \ bin」へのパスを指定する必要があります。次に、パスの最後に%JAVA_HOME%\ binを追加します。

4)パスは次のようになります。C:\ Program Files(x86)\ Google \ google_appengine \; C:\ Users \ username \ AppData \ Roaming \ npm;%M2%;%JAVA_HOME%;%JAVA_HOME%\ bin

注意:%M2%のように%で囲まれたアイテムには、変数が割り当てられます。冗長に見えますが、必要です。次のように入力して、すべてが機能することを確認できます。

java -version
javac -version
mvn -version

commanプロンプトに入力された3つのステートメントのそれぞれがエラーを返すべきではありません。


手順2)は不正確で不要です。JavaツールチェーンもMavenも、%JAVA_HOME%を「PATH」変数に含める必要はありません。(実際には害はありませんが、効果もありません。)参照-tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C

0

Windows 10の使用

私は問題に直面していました..次にJAVA_HOME変数を完全に削除し 、PATHに%JAVA_HOME%\ binを追加しただけで機能しました!!! 私のために


1
Thanks.Itは、Java_home変数の最後に「/ bin」を追加した後に機能します
Rahul

-1

JDKはjava.exeの場所を1.6と1.7の間で切り替えました!!!

私の場合、JDKのJAVA_HOMEの最後に\ jreを追加する必要があることがわかりました。mvn batファイルはjava.exeを探し、JAVA_HOME \ binで探します。JDK 1.7にはありません。JAVA_HOME \ jre \ binにあります。JDK 1.6では、JAVA_HOME \ binにあります。

これが誰かを助けることを願っています。


1
これは間違いだと思います。Java 7の公式Oracleドキュメント(docs.oracle.com/javase/7/docs/technotes/tools/windows/…)によると、JDKインストールでは、「java」コマンドは「JAVA_HOME \ bin」と「 JAVA_HOME \ jre \ bin」。これがインストール環境でそうでない場合は、誰か/何かがそれを混乱させています!
スティーブンC

面白い。それは私の/ binディレクトリではなく、私の/ jre / binにあります。多分私は最新のJDKを再インストールする必要があります
Brian Reinhold

-1

私の状況は少し違っていました。

  • JAVA_HOME 1.7を指すように適切に設定されました
  • 他のMavenプロジェクトは、1.7の機能で正常に動作/構築されていました。
  • PATH 正しく設定されました。
  • すべてが最新でした。

それでも、私の単純な新しいMavenプロジェクトは機能していませんでした。気づいたのは、実行しmvn clean installたときのログの違いです。私の古いMavenプロジェクトの場合、それは

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ oldProject---

しかし、私の新しいプロジェクトについては、それは示しました:

[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ newProject ---

だから、私はを見POM.xmlて、古いプロジェクトのPOMでこのことに気づきました:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

基本的に、このプラグインは、コンパイルに使用するコンパイラーのバージョンを指示します。それを新しいプロジェクトに追加しただけで、POM.xmlうまくいきました。

それが誰かに役立つことを願っています。


これはこの質問に対する有効な回答ではありません。症状は異なります。解決策は異なります。
Stephen C

-1

私はWindows 7を使用していますが、問題は簡単でした。

私のJAVA_HOME環境変数値にこれがありました:

"C:\Program Files\Java\jdk1.7.0_51;"

必要なとき:

"C:\Program Files\Java\jdk1.7.0_51"

セミコロンが再びストライキ!

:)

これが私がこの問題を解決した方法なので、これは1つの可能な解決策になるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.