web-dev-qa-db-ja.com

Java_HOME環境変数が正しく定義されていないMavenエラーを修正するにはどうすればよいですか?

問題:

Innoセットアップバッチ実行を実行すると、「Java_HOME環境変数が正しく定義されていません」というMavenエラーが表示されます。ただし、Inno Setup以外では正常に実行できます(コマンドライン、バッチファイル、Vbsなど)。問題を特定することはできません。

Inno Setup Invoked Prompt:

C:\>mvn -version
The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE

通常のコマンドプロンプト:

C:\>mvn -version
C:\
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T01:09:06+05:30)
Maven home: C:\Program Files\Apache-maven-3.5.0\bin\..
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_131\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", Arch: "AMD64", family: "windows"

InnoSetupからのMavenコマンド:

[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""

バッチファイルからのMavenコマンド:

mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Java_HOMEの設定

Java 1.8がインストールされているかどうかを確認します。インストールされていない場合は、同じものをインストールし、Java HOMEを次のように設定します。

SETX Java_HOME "C:\Program Files\Java\jdk1.8.0_131"
SETX -m Java_HOME "C:\Program Files\Java\jdk1.8.0_131"
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;C:\Program Files\Java\jdk1.8.0_131\bin;" /f

どうもありがとう。

18
i_am_rky

SETXコマンドは、現在の環境を変更しません。

次のバッチファイルを実行する場合:

setx AAA aaa
echo AAA=%AAA%

印刷します

AAA=

したがって、バッチファイルが間違っています。 setを使用する必要があります:

set AAA=aaa

Windowsの環境変数でのSETXとSETの違い を参照してください。

3
Martin Prikryl

私のJDKはC:\Program Files\Java\jdk1.8.0_144\にインストールされます。
Java_HOME= C:\Program Files\Java\jdk1.8.0_144\を設定しましたが、このエラーが発生していました。

The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE

Java_HOMEC:\Program Files\Java\jdk1.8.0_144\jreに変更すると、問題が修正されました。
方法はわかりません。

25
Koushik

問題を解決する最善の方法は次のとおりです。クラスパスで次を確認してください。

  1. Java_HOMEシステム変数にjdkがなければならないことを確認してください(例:C:\Program Files\Java\jdk1.7.0_80)、ここにbinを追加しないでください。

  2. MAVENはC:\Program Files\Java\jdk1.7.0_80の下にあるjreを探すため

  3. クラスパスに%Java_HOME%\binを設定します。

次に、Mavenバージョンを試してください。

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

9
mukesh sharma

Java_HOME変数を削除し、それぞれjdkとjreをポイントすることで、パスとクラスパス変数のみを保持しました。それは私のために働いた。

4
Shivakumar

Windows OSで mvn clean package コマンドを使用しているときに同じ問題に直面していました

C:\Eclipse_workspace\my-sparkapp>mvn clean package
The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE

Java_HOME 環境変数をUser Variables/System Variablesから削除してラップトップを再起動することで、この問題を解決しました、 Java_HOME 環境変数を再度設定します。

それがあなたを助けることを願っています。

3
Prashant Sahoo

Java_HOMEシステム変数がC:\ Program Files\Java\jdk1.8.0_171\binを指していて、PATHエントリが%Java_HOME%だけで構成されていたときに、同じ問題が発生していました。

Java_HOME変数を変更してbinフォルダー(C:\ Program Files\Java\jdk1.8.0_171)を除外し、binフォルダーをシステムPATH変数に追加しました:%Java_HOME%\ bin

3
slashNburn

コマンドラインからJava_HOMEディレクトリを設定するとうまくいきました!

最初:

Java_HOME="C:\Program Files\Java\jdk1.8.0"

または :

export Java_HOME="C:\Program Files\Java\jdk1.8.0"

次に試してください:

mvn -version

同じエラーが発生しないことを確認します。 :)

2
Dicle

私は同じ問題に苦労し、次のことがうまくいきました。

ステップ1:Java_HOME設定を確認します。次のようになります。

Java_HOME="/usr/libexec/Java_home"

ステップ2:次のようにJava_HOMEを更新します。

$ vim .bash_profile 

export Java_HOME=$(/usr/libexec/Java_home)

$ source .bash_profile

ステップ3:新しいシェルで、Mavenコマンドが正しく機能していることを確認します。

$ mvn -version

これで問題が解決した場合は、次のような応答が返されます。

Apache Maven 3.0.3 (r1075438; 2011-03-01 01:31:09+0800)
Maven home: /usr/share/maven
Java version: 1.7.0_05, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.2", Arch: "x86_64", family: "mac"
1
d_dawg

Windows 7でも同じ問題が発生しました。

The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE

ソリューションは非常にシンプルであることが判明しました-コマンドプロンプトショートカットを右クリックし、[管理者として実行]を選択します。その後、問題はなくなりました)

0
Yurii Koval

「Java_HOMEがJREではなくJDKを指す必要がある」という問題に直面している場合は、ユーザー変数Java configおよびシステム変数Java configを一度確認してください。これで問題が解決しました。

0
amitkumar singh

Windowsの場合、jdkへのパスに( "C:\ Program Files\jdk")のようなスペースがある場合は機能しませんが、スペースのない場所にjdkを置いておくと正常に機能しますのような( "C:\ jdk")

0
Sushant