18

最近、Javaのバージョンを確認しました。コマンドを実行したjava -versionところ、を使用していることがわかりましたjava version 1.7.0_09。しかし、C:\Program Files\Java\ディレクトリをチェックしようとすると、同じバージョンが見つからないようです。私は次のものだけを見ます:

  • j2re1.4
  • jdk1.6.0_32
  • jdk1.7.0_06
  • jdk1.7.0_07
  • jre6
  • jre7

等々...

私のプログラムはまだ実行されていますが、すべてを手動でコンパイルしようとしているだけで、JavaがOSによってどのように扱われているかを理解しています。

もう1つ奇妙なのは、環境変数の設定を確認しようとしたところ、何も表示されないことですjdk1.7.0_09

道:

  • C:\ Program Files \ Common Files \ Microsoft Shared \ Windows Live;
  • %SystemRoot%\ system32;
  • %SystemRoot%;
  • %SystemRoot%\ System32 \ Wbem;
  • %SYSTEMROOT%\ System32 \ WindowsPowerShell \ v1.0 \;
  • C:\ Program Files \ TortoiseSVN \ bin;
  • C:\ Program Files \ Windows Live \ Shared;
  • C:\ eclipse \ plugins \ com.google.appengine.eclipse.sdkbundle_1.6.5 \ appengine-java-sdk-1.6.5 \ bin;
  • C:\ Program Files \ Java \ jdk1.7.0_07 \ bin; C:\ Program Files \ QuickTime \ QTSystem \;
  • %ANT_HOME%\ bin

どういうわけか自動的に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。その中のファイルは次のとおりです。

  • jdk1.7.0_07.msi
  • sj170070.cab
  • ss170070.cab
  • st170070.cab
  • およびsz170070.cab
4

4 に答える 4

18

コンピュータ上に多くのJREを並べて配置することが可能です。

JREがWindowsに正しくインストールされている場合、各バージョンに関する情報がレジストリに保存されます。インストールプロセスは、システムPATH(%SYSTEMROOT%\ System32 )に特別なjava.exeをインストールします。したがって、この特別なjava.exeが現在のJREを検出するため、PATHを変更する必要はありません。コマンドラインからjava-versionと入力して、インストールされている現在のjreバージョンを表示します。

リリース1.6では、レジストリを変更せずに、前回のインストールとは異なるJREインストールを選択できるようになりました。

JREのインストールは、レジストリのキーにリストされています

HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft\Javaランタイム環境

この簡単なテストクラスを受講してください

public class ShowVersion {
 public static void main(String args[]) {
   System.out.println(System.getProperty("java.version"));
 }
}

1.6および1.5がインストールされているシステム。入力した場合

> java ShowVersion

最後にインストールされたので、おそらく1.6JREが使用されます。

代わりに1.5JREを強制するには、このコマンドラインを使用します。

> 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"

ソース:コマンドラインから特定のJREを選択します

于 2012-12-05T23:31:13.893 に答える
5

以下を追加すると、問題が解決します。

set JAVA_HOME="your jdk path"
set PATH=%JAVA_HOME%\bin;%PATH%.

さらに、それが機能しない場合は、複数のJavaバージョンに設定していることを意味し、最新のもののみを含め、変数PATHからすべてを削除します。PATH

于 2017-03-27T08:50:47.863 に答える
2

「実際の」質問への回答:

もう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のデフォルトになります。

于 2012-12-05T23:34:00.890 に答える
2

コメント内のそのAppDataパスは(おそらく、とにかく)あなたのパス上にないので、おそらくそれが使用しているものではありません。残念ながら、whichWindowsにもコマンドはありません。

パスを編集してC:\Program Files\Java\binディレクトリをリストの最初に移動しても、それでも印刷1.7.0_09される場合は、どういうわけかJDK7u7フォルダにJDK7u9があります。そうでない場合は、パス上の他のすべてのディレクトリを参照し、適切なファイルが見つかるまで1つずつ開きjavaます。あなたにとって幸いなことに、あなたの道は私のものよりはるかに短いです。

行うときは注意してください:

> java -version

java.batまた、他の非拡張機能を探す場合もexeあるので、パスを検索している間はこれに注意してください。実行してみてください:

> java.exe -version

そうすれば、ファイルを探していることがわかりexeます。

最後に試すことができること:

> "C:\Program Files\Java\jdk1.7.0_07\bin\java" -version

これが返される場合は1.7.0_09、JDKをインプレースで更新する何かが発生しましたが、これは発生するはずのないAFAIKです(ただし、間違っている可能性があります)。

于 2012-12-05T23:43:09.233 に答える