問題:
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
どうもありがとう。
SETX
コマンドは、現在の環境を変更しません。
次のバッチファイルを実行する場合:
setx AAA aaa
echo AAA=%AAA%
印刷します
AAA=
したがって、バッチファイルが間違っています。 set
を使用する必要があります:
set AAA=aaa
Windowsの環境変数でのSETXとSETの違い を参照してください。
私の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_HOME
をC:\Program Files\Java\jdk1.8.0_144\jre
に変更すると、問題が修正されました。
方法はわかりません。
問題を解決する最善の方法は次のとおりです。クラスパスで次を確認してください。
Java_HOMEシステム変数にjdkがなければならないことを確認してください(例:C:\Program Files\Java\jdk1.7.0_80
)、ここにbinを追加しないでください。
MAVENはC:\Program Files\Java\jdk1.7.0_80
の下にあるjreを探すため
クラスパスに%Java_HOME%\bin
を設定します。
次に、Mavenバージョンを試してください。
それが役立つことを願っています。
Java_HOME変数を削除し、それぞれjdkとjreをポイントすることで、パスとクラスパス変数のみを保持しました。それは私のために働いた。
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 環境変数を再度設定します。
それがあなたを助けることを願っています。
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
コマンドラインからJava_HOMEディレクトリを設定するとうまくいきました!
最初:
Java_HOME="C:\Program Files\Java\jdk1.8.0"
または :
export Java_HOME="C:\Program Files\Java\jdk1.8.0"
次に試してください:
mvn -version
同じエラーが発生しないことを確認します。 :)
私は同じ問題に苦労し、次のことがうまくいきました。
ステップ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"
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
ソリューションは非常にシンプルであることが判明しました-コマンドプロンプトショートカットを右クリックし、[管理者として実行]を選択します。その後、問題はなくなりました)
「Java_HOMEがJREではなくJDKを指す必要がある」という問題に直面している場合は、ユーザー変数Java configおよびシステム変数Java configを一度確認してください。これで問題が解決しました。
Windowsの場合、jdkへのパスに( "C:\ Program Files\jdk")のようなスペースがある場合は機能しませんが、スペースのない場所にjdkを置いておくと正常に機能しますのような( "C:\ jdk")