1

フォームテストの失敗を防ぐために1.6JDKを使用するという具体的なプロジェクトを開始しました。 JDKを1.7から1.6に変更しようとしたときに、奇妙な動作に遭遇しました。

環境変数を1.7から1.6JDKバージョンに変更しましたが、実行java.exe -versionまたは実行java -versionするとcmd、以前のバージョンが提供されます。しかし、実行するjavac -versionと1.6バージョンになります。

私がこれまでにしたことは、

ユーザー環境変数では、

  • C:\Program Files\Java\jdk1.6.0_43(JDKインストールパス)へのクラスパス
  • java_home変数を追加し、パスをC:\Program Files\Java\jdk1.6.0_43(JDKインストールパス)に変更します
  • パスをC:\Program Files\Java\jdk1.6.0_43\bin(Java bin)に変更しました

システム環境変数では、

  • C:\Program Files\Java\jdk1.6.0_43\binに追加CLASSPATH
  • JAVA_HOME変数を作成し、追加しましたC:\Program Files\Java\jdk1.6.0_43\bin

QLJAVAと呼ばれるJavaに関連する変数があり、パスがに設定さC:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zipれていて、その変数も削除しました。 編集するCLASSPATHは、これはそこにあったのと同じパスです

私の問題

  1. java -versionを使用したときに1.7を選択する理由と、実行したときに異なる結果が得られる理由javac -version。または私がすでに行ったことに何か問題がありますか?
  2. 変数とは何ですかQLJAVA、それの使用法は何ですか、そしてどのようにしてシステム変数になりましたか?

  3. 1.6に変更する理由には、バックワードの互換性がありません。

4

2 に答える 2

11

Javaの環境変数を設定する際のガイドラインの一部を次に示します。

JAVA_HOMEJavaインストールパスを指す 必要があります
PATHに含める必要があります%JAVA_HOME%/bin

私は通常、異なるJavaバージョンを異なる環境変数として設定し、変更してそれらを切り替えますJAVA_HOME

例えば。

JAVA_6=c:\jdk6
JAVA_7=c:\jdk7
JAVA_HOME=%JAVA_6% (or JAVA_HOME=%JAVA_7%)
PATH=%JAVA_HOME%\bin;%PATH%

また、パス内の他のエントリが異なるバージョンのJavaを指している可能性があるため、通常は%JAVA_HOME%\bin最初にエントリを追加します。

また、環境変数に変更を加える場合は、新しいcmdインスタンスを閉じて開き、環境変数を再ロードする必要があります。

最後に、パスにスペースがあると効果があります。それらに引用符を追加するか、DOSの古い変数規則を使用する必要がある場合があります。例えば。PROGRA~1プログラムファイルの代わりに。

あなたの問題に答えるために:

  1. PATH環境変数は、javaとjavacの異なるパスを指します。をPATH変数の最初のエントリとして設定するだけ%JAVA_HOME%\binで、必要な適切なバージョンのJAVAが選択されます。

  2. QTJAVAについては、まだ出会っていないので具体的な答えは出せません。それがどのようにそこに到達したかに関しては、まあ、いくつかのソフトウェア/プログラムは、それらをインストールするときに環境変数を変更して、それらがそのようにそこに到達するようにします。

  3. 下位互換性があるか、そうしようとします。コードを見たことがなく、JDK 7を実際に試したこともありませんが、提供したリンク(https://tickets.openmrs.org/browse/TRUNK-3142)の問題によると、JDK7の問題のようです。 。

お役に立てれば。

于 2013-03-27T06:22:00.157 に答える
5

ローダーjava.exeは通常Windows\System32ディレクトリに配置されますが、JDKにもコピーがあります。コンパイラjavac.exeは常にJDKにあります。これがあなたが見ているものの根源です。

java.exeパスの前にあるフォルダにコピーが表示される可能性が高くなりWindows\System32\java.exeます。

java.exe書き込みに十分な権限がないため、v1.6のインストールで古いものの上書きに失敗している可能性もありますWindows\System32が、この場合はエラーが発生するはずです。

何が起こっているのかを理解するための最良の方法はwhich.exe、CygwinまたはMinGWにあるコマンドをインストールすることです。と言うと、問題の原因となっているv1.7which java.exeへのパスが表示されます。java.exeパスを調整するか、ファイルを削除するか、名前を変更します。

于 2013-03-27T04:55:55.473 に答える