将JDK更改为另一个版本问题

diy*_*da_ 1 java windows configuration

我已经开始了一个专门说使用1.6 JDK来防止表单测试失败的项目. 当我试图将JDK从1.7改为1.6时,我遇到了一种奇怪的行为.

即使我将环境变量从1.7更改为1.6 JDK版本,当我运行java.exe -version或运行java -versioncmd,它仍然提供早期版本.但是当我运行javac -version它时会给出1.6版本.

到目前为止我做了什么,

在用户环境变量中,

  • classpath to 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\binCLASSPATH
  • 创建了JAVA_HOME变量并添加了 C:\Program Files\Java\jdk1.6.0_43\bin

有一个与Java相关的变量,名为QLJAVA,路径设置为C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip,我也删除了该变量. 我编辑之前,CLASSPATH这是与那里相同的路径

我的问题,

  1. 为什么在使用java -version时选择1.7,为什么在运行时给出不同的结果javac -version.或者我已经做了什么有什么问题?
  2. 什么是QLJAVA变量以及它的用途以及最终如何在系统变量中出现.

  3. 为什么要改为1.6是没有任何后备兼容性.

dar*_*rux 11

以下是为java设置环境变量时的一些指导原则.

JAVA_HOME应该指向
PATH应该包含的java安装路径 %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%
Run Code Online (Sandbox Code Playgroud)

此外,路径中的某些其他条目可能指向不同版本的Java,因此我通常%JAVA_HOME%\bin首先添加条目.

此外,在更改环境变量时,应关闭并打开新的cmd实例以重新加载环境变量.

最后,在路径上放置空格可能会产生影响.您可能需要向它们添加引号或使用DOS的旧变量约定.例如.PROGRA~1而不是程序文件.

要回答你的问题:

  1. 您的PATH环境变量指向java和javac的不同路径.只需将其设置%JAVA_HOME%\bin为PATH变量的第一个条目,它应该选择正确的JAVA版本.

  2. 至于QTJAVA,我还没有遇到它,所以我无法给出具体的答案.至于如何到达那里,好吧,一些软件/程序在安装时修改环境变量,以便他们以那种方式实现.

  3. 它应该向后兼容或尝试.我没有看到代码,也没有真正尝试过JDK 7,但是根据你给出的链接上的问题(https://tickets.openmrs.org/browse/TRUNK-3142),它看起来像是一个JDK 7问题.

希望这可以帮助.


Gen*_*ene 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中找到它.当你说which java.exe,你会看到java.exe导致问题的v1.7 的路径.调整路径,删除或重命名文件.