私はコントロールパネルの 'システム'の環境変数に行き、二つの新しい変数を作りました。一つはユーザー変数用、もう一つはシステム変数用です。どちらもJava_HOMEという名前で、どちらも指しています。
C:\ Sun\SDK\jdk\bin
しかし、何らかの理由で、私はまだJavaコマンドを実行するときに以下のエラーが出ます...
BUILD FAILED
C:\Users\Derek\Desktop\Eclipse\eclipse\glassfish\setup.xml:161: The following error occurred while executing this line:
C:\Users\Derek\Desktop\Eclipse\eclipse\glassfish\setup.xml:141: The following error occurred while executing this line:
C:\Users\Derek\Desktop\Eclipse\eclipse\glassfish\setup.xml:137: Please set Java.home to a JDK installation
Total time: 1 second
C:\Users\Derek\Desktop\Eclipse\eclipse\glassfish>lib\ant\bin\ant -f setup.xml
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
Buildfile: setup.xml
どうすればこの問題を解決できますか?
JDKインストールディレクトリを検索する
まず、Java Development Kitのインストールパスを知る必要があります。
JDKのデフォルトのインストールパスを開きます。
C:\Program Files\Java
以下のようなサブディレクトリがあるはずです。
C:\Program Files\Java\jdk1.8.0_172
注: oneの場合は、末尾に/ binを付けずにjdkへのパスを入力するだけです(多くの場所で推奨されています)。例えばC:\ Java\jdk1.8.0_172およびNOT C:\ Java\jdk1.8.0_172\bin!
Java_HOME変数を設定します
JDKのインストールパスが決まったら:
注: Windowsを再起動する必要があるかもしれません
完全な記事は、私のブログにあります: WindowsでのJava_HOME変数の設定 。
%Java_HOME%\bin
環境変数がjdk
フォルダを指すようにして、Path環境変数にJava_HOME
を追加しました。
あなたのシステムに最初に JDKをインストールする必要があります 。
Javaホームの設定
Java_HOME = C:¥Program Files¥Java¥jdk1.7.0 [JDKインストールディレクトリの場所]
JDKのインストールパスが決まったら:
システム変数の下にJavaパスを設定します。
_ path _ = C:¥Program Files¥Java¥jdk1.7.0; [セミコロンで値を追加]
cmd(一時的にそのcmdウィンドウ用):
set Java_HOME="C:\\....\Java\jdk1.x.y_zz"
echo %Java_HOME%
set PATH=%PATH%;%Java_HOME%\bin
echo %PATH%
http://javahowto.blogspot.com/2006/05/javahome-vs-javahome.html
「コントロールパネル」>「Java」、「Java」タブで、「表示」ボタンをクリックします。実行時パラメータに、次のように入力します。
-Djava.home=YOUR_PATH_HERE
あるいは、Javaを実行するときに、そのコマンドラインスイッチをコマンドに追加することができます。
Java -Djava.home=PATH SomeJavaApp
これをC:\Sun\SDK\jdk
に設定する必要があります(JDKがインストールされている場所であると想定します - これはデフォルトではありません) - C:\Sun\SDK\jdk\bin
に\ binを入れないでください。
現在のユーザーとしてログインしたときにのみアプリが実行される場合は、それをユーザー変数に入れます - システム上のすべてのユーザーに対して実行する必要がある場合は、システム変数に入れます。
また、%Java_HOME%\bin
をパスに追加する必要があるかもしれません(また、それをユーザーだけから実行するのか、Systemを含むすべてのユーザーから実行するのかによっても異なります)。
これは 公式の解決策 www.Java.comからJava環境を設定するための - ここ です。
Windows 7、Windows Vista、Windows XP、Linux/Solaris、およびその他のシェル用のソリューションがあります。
Windows 7
- スタートメニューからコンピュータを選択します
- コンテキストメニューから[システムのプロパティ]を選択します。
- システムの詳細設定 - >詳細設定タブをクリックします。
- [システム環境変数]の下の[環境変数]をクリックし、[PATH]を見つけてクリックします。
- 編集ウィンドウで、クラスの場所をPATHの値に追加してPATHを変更します。 PATHという項目がない場合は、新しい変数を追加し、名前としてPATHを、値としてクラスの場所を追加することを選択できます。
- コマンドプロンプトウィンドウを開き、Javaコードを実行します。
まだこの問題に困惑している人のために(私はすべての上記の提案を試してみました) -
64ビット版のWindowsを使用していて、PATH
変数を調整する以外に32ビットJDKをインストールした場合は、 registry 変数も調整する必要があります。
私は自分のPATH
変数を正しく - まだ利用できないように - 設定していて、その後、私のレジストリで "空いた" Javaエントリを見つけることだけを考え出していました。
私が始めようとしていたプログラムを見るためにProcess Monitor
を使って、それがJava(Runtime Environment)のレジストリのどこを見ているのかを嗅ぐために、私はそれが 32-bit バージョンのHKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\JavaSoft\Java Runtime Environment
にあるレジストリエントリ。
そのキーの中に、インストールされているさまざまなJavaバージョンのサブキー(過去および/または現在)があるはずです。最新バージョンのサブキーをクリックします(たとえば、現在のサブキーは1.7.0_25です)。そのサブキーをクリックすると、右側にレジストリ文字列の値、特にJavaHome
とRuntimeLib
が表示されます。これら2つの値をそれぞれ current フォルダーとjvm.dllファイルの両方を反映するように変更する必要があります。
たとえば、私の場合、(以前の)それぞれの値はC:\Program Files (x86)\Java\jre7
とC:\Program Files (x86)\Java\jre7\bin\client\jvm.dll
に設定されていましたが、これは私のマシンでは存在しません。これらを現在のフォルダーとファイルC:\Program Files (x86)\Java\jdk1.7.0_25\jre
とC:\Program Files (x86)\Java\jdk1.7.0_25\jre\bin\client\jvm.dll
に更新する必要がありました。
繰り返しますが、これはインストールしたJavaのバージョン(JDKまたはJRE、あるいはその両方)(32または64ビット)と、使用しているオペレーティングシステムの種類(32または64ビット)の両方に完全に依存します。これらがレジストリ内のさまざまな場所に反映されていることを知ってください(32ビットアプリケーション用のWow6432Node
、私の場合は64ビットマシンに32ビットJDKがインストールされている場合など)。
これら2つのレジストリ値を更新したので、私のプログラムは完璧に動作し、Java Runtime Environmentの欠落(レジストリに起因する)についての問題や苦情はもうありません。
コントロールパネル\すべてのコントロールパネル項目\ユーザーアカウント にアクセスします。Internet ExplorerではなくInternet Explorerを使用します。
または
環境変数を変更します
新しい...
(システム変数セクションに追加するための十分な権限がない場合は、ユーザー変数セクションに追加します)
変数名として Java_HOME を、変数値としてJDKの場所を追加> OK
テスト:
set Java_HOME
Java_HOME=C:\Program Files\Java\jdk1.8.0_60
gotoマイコンピュータ(このパソコン) - >右クリック - >プロパティの選択 - >システムの詳細設定 - >環境変数 - > in システム変数 " New "ボタンをクリックして Java_HOME in 変数名 およびパスC:¥Program Files¥Java¥jdk1.8.0_131 jdkが変数値に存在していた - > [OK]をクリック.
java_HOMEを設定したら、コマンドプロンプトを閉じて再度開きます。 Java_HOMEを設定する前に開かれたcmdに変更が反映されない場合があります。
端末自体からもJava_HOMEを設定できます。 SET Java_HOME = "C:¥Program Files(x86)¥Java¥jdk1.8.0_131"
ここで交換可能な2つの環境変数を区別する必要があります。 1つはJava_HOME変数です。もう1つはPath変数です。 Java_HOME変数を参照するプロセスは、JREではなくJDKへの検索パスを探しています。 Java_HOME変数の使用は、Javaコンパイラ自体を対象とするものではありません。コンパイラは、独自の場所を認識しています。この変数は、他のソフトウェアがコンパイラを簡単に見つけるためのものです。この変数は、通常、IDEソースコードからアプリケーションをコンパイルおよびビルドするためにJavaソフトウェアによって使用されます。対照的に、Windows CMDインタープリター、および他の多くのファーストおよびサードパーティソフトウェアは、Java_HOME変数ではなくPath変数を参照します。
ユースケース1:CMDからのコンパイル
たとえば、IDEソフトウェアを使用しておらず、現在の作業ディレクトリとは無関係にCMDからコンパイルしたい場合は、Path変数を正しく設定する必要があります。 。あなたの場合、Java_HOME変数さえ必要ありません。 CMDはJavaコンパイラーを見つけるためにJava_HOMEではなくPathを使用しているため。
ユースケース2:IDEからのコンパイル
ただし、いくつかのIDEソフトウェアを使用している場合は、まずドキュメントを確認する必要があります。 Java_HOMEを設定する必要がありますが、同じ目的で別の変数名を使用することもあります。長年の事実上の標準はJava_HOMEでしたが、常にそうであるとは限りません。
ユースケース3:IDEおよびCMDからのコンパイル
IDEソフトウェアに加えて、現在の作業ディレクトリに関係なくCMDからコンパイルできるようにしたい場合は、additionJava_HOME変数に、JDK検索パスをPath変数に追加する必要がある場合があります。
Java_HOME vs.パス
問題がJavaのコンパイルに関連している場合は、Java_HOME変数とパス(該当する場合)を確認する必要があります。問題がJavaアプリケーションの実行に関連している場合、Path変数を確認する必要があります。
パス変数は、すべてのオペレーティングシステムで広く使用されています。システムによって定義され、JREの検索に使用されるデフォルト変数であるため、Javaアプリケーションの実行に問題はほとんどありません。特に、ソフトウェアインストーラーが通常すべてをセットアップするWindowsではそうではありません。しかし、手動でインストールする場合、最も安全なことは、おそらくJava_HOME変数を完全にスキップし、JDKとJREの両方ですべてにPath変数を使用することです。 IDEソフトウェアの最新バージョンは、それを選択して使用できるはずです。
シンボリックリンク
シンボリックリンクは、既存の環境変数の1つをピギーバックすることにより、JDK検索パスを参照する別の方法を提供する場合があります。
Oracle/Sun JDK/JREリリースの以前のバージョンについてはわかりませんが、少なくともjdk1.8.0_74のインストーラーは、検索変数C:\ProgramData\Oracle\Java\javapath
をPath変数に追加します文字列値の先頭に置きます。このディレクトリには、JREディレクトリ内のJava.exe、javaw.exe、およびjavaws.exeへのシンボリックリンクが含まれています。
したがって、少なくともJava 8 JDKおよびおそらくJava 8 JREスタンドアロンでは、JREの環境変数設定を行う必要はありません。インストーラーパッケージを使用してセットアップする限り。ただし、Windowsのインストールには違いがある場合があります。 Oracle JREはJDKにバンドルされていることに注意してください。
Java JDK構成が誤ったバージョンのコンパイラを使用している、または明示的に定義されていない(スペルをキャストしない)マジックで動作しているように見える場合は、環境変数のどこかにシンボリックリンクします。したがって、シンボリックリンクを確認することをお勧めします。
あなたのJavaディレクトリをあなたのPATH
変数に追加している間、あなたはそれをそれの始めに正しく置くことを望むかもしれません。私は問題を抱えていました、PATH
の最後にJavaディレクトリを置いてもうまくいかないということです。確認したところ、Java.exe
ディレクトリにWindows\System32
が見つかりました。PATH
...に同じ名前のファイルが複数ある場合は、最初のものが優先されます。
Eclipseの場合:Window->Preferences->Java->Installed JREs
検索機能を使用して、最新のJavaインストールがリストされていることを確認してください。それがチェックされているものであることを確認してください。これはJREではなくJDKであるべきです。
管理者として Eclipse を実行します。
これで私の問題は解決しました。私はまだその背後にある論理について掘り下げています。
jdkのインストール後にコンピュータを再起動していない場合は、コンピュータを再起動してください。
portable Javaを作成してJavaを使用する前にパスを設定したい場合は、以下に説明するバッチファイルを作成してください。
コンピュータの起動時にこのバッチファイルを実行する場合は、バッチファイルのショートカットをスタートアップフォルダに配置してください。 Windows 7では、スタートアップフォルダは "C:¥Users¥user¥AppData¥Roaming¥Microsoft¥Windows¥Start Menu¥Programs¥Startup"です。
このようなバッチファイルを作ります。
set Java_Home=C:\Program Files\Java\jdk1.8.0_11
set PATH=%PATH%;C:\Program Files\Java\jdk1.8.0_11\bin
注:Java_home
とpath
は変数です。あなたはあなたが望むように任意の変数を作ることができます。例えばset amir=good_boy
でamirを%amir%
で見たり、Java_homeを%Java_home%
で見たりできます。
ここでのほとんどの解決策を何時間もかけて作業したところ、32ビットJDKをインストールするだけで問題は解決しました。
Windows/System32フォルダで次のファイルを探したい場合があります。 - Java.exe - javaw.exe - javaws.exe
Path変数にこれらのファイルが含まれているため、なぜJava -versionまたはjavac -versionが古いJava_HOMEを指し続けているのかを突き止めようとすると頭が痛くなります。たとえば、これらのファイルの名前を変更し、拡張子をアンダースコアで囲みます。そして、Java_HOME変数を作成し、それをパス変数(たとえば%Java_HOME%)に追加して、 "\ bin"パーティクルを追加するだけです。このようにすると、Java_HOMEを設定するだけで、異なるJREまたはJDKを指すJava_HOME変数を変更し、複数のJavaをインストールするだけで済みます。
これは、インストーラを使わずにJavaを手動でインストールする方が良いことを意味します。