最近、Javaバージョンを確認しました。コマンドJava -version
を実行し、Java version 1.7.0_09
を使用していることがわかりました。しかし、C:\Program Files\Java\
ディレクトリ、同じバージョンが見つからないようです。
等々...
私のプログラムはまだ実行されますが、私はすべてを手動でコンパイルしようとしており、JavaがOSによってどのように扱われているかを理解しています。
もう1つ奇妙なのは、環境変数の設定を確認しようとしましたが、jdk1.7.0_09
について何も言わないことです。
パス:
どういうわけか自動的にjreになったことを皆さんに伝えたいだけです。
完全なディレクトリはC:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09
で、lzma.dll
という名前のファイルがあります。
しかし、C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07
と言う別のディレクトリがあります。内部のファイルは次のとおりです。
多くのJREをコンピューター上に並べて配置することができます。
JREがWindowsに正しくインストールされている場合、各バージョンに関する情報はレジストリに保存されます。インストールプロセスは、システムPATHに特別なJava.exeをインストールします(%SYSTEMROOT%\ System32))。この特別なJava.exeは現在のJREを見つけるため、PATHを変更する必要はありません。コマンドラインから、Java -versionと入力して、インストールされている現在のjreバージョンを表示します。
リリース1.6では、レジストリを変更せずに、最後のインストールとは異なるJREインストールを選択できるようになりました。
JREインストールは、レジストリのキーにリストされています。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
この簡単なテストクラスを受講する
public class ShowVersion {
public static void main(String args[]) {
System.out.println(System.getProperty("Java.version"));
}
}
1.6および1.5がインストールされたシステム。入力した場合
> Java ShowVersion
おそらく最後にインストールされたので、使用されるのは1.6 JREです。
代わりに1.5 JREを強制するには、このコマンドラインを使用します。
> Java -version:"1.5" ShowVersion
バイトコードが特定のJREと互換性がない場合、..もちろん動作しません。
ref: technote Java 6
特定のインストールを使用するための完全なパスをいつでも指定できます。この方法でJVMを起動しても、レジストリ設定はまったく使用されません。
>"C:\Program Files\Java\j2re1.4.1_02\bin\Java" -version
Java version "1.4.1_02"
source: コマンドラインから特定のJREを選択
以下を追加すると問題が解決します。
set Java_HOME="your jdk path"
set PATH=%Java_HOME%\bin;%PATH%.
さらに、それが機能しない場合は、複数のJavaバージョンにPATH
を設定したことを意味します。最新バージョンのみを含め、PATH
変数からすべて削除します。
「実際の」質問への回答:
奇妙なもう1つのことは、環境変数の設定を確認しようとしましたが、jdk1.7.0_09については何も言っていません。
ここで起こったことは、jdk1.7.0_07をインストールし、それを自動アップグレードしたことです。その場合、最初にインストールした古いフォルダー名が引き続き使用されます。
Javaをインストールした後、通常、JDKディレクトリのコピーを作成し、バージョン番号を付けて名前を付けます。その後、特定のJavaのようにそう:
@echo off
:: testjava.bat
set Java_HOME=C:\JDK1.x.xx
set PATH=%Java_HOME%\bin;%PATH%;.
Java -version
pause
したがって、上記のようにJava_HOMEシステム変数とPATH変数を設定することをお勧めします。これにより、システム上のすべてがオーバーライドされ、選択したJDKがJREのデフォルトになります。
コメント内のそのAppData
パスは(おそらくとにかく)あなたのパス上にないので、おそらくそれが使用しているものではないでしょう。残念ながら、Windowsにもwhich
コマンドはありません。
パスを編集してC:\Program Files\Java\bin
ディレクトリをリストの一番最初に移動しても、1.7.0_09
が出力される場合、どういうわけかJDK7u7フォルダーにJDK7u9があります。そうでない場合は、パス上の他のすべてのディレクトリを参照し、適切なJava
ファイルが見つかるまで1行1列を開きます。幸いなことに、パスはmuchの方が短いです。
次のことに注意してください。
> Java -version
また、Java.bat
およびその他のexe
以外の拡張機能も検索する場合があるため、パスを検索している間はこれに注意してください。実行してみてください:
> Java.exe -version
そうすればknowexe
ファイルを探しています。
最後にできること:
> "C:\Program Files\Java\jdk1.7.0_07\bin\Java" -version
これが1.7.0_09
を返す場合、JDKをその場で更新する何かが起こりました。これは起こるはずのないことですが、私は間違っています。