将JDK更改为其他版本问题



我已经开始了一个项目,特别指出使用1.6 JDK来防止表单测试失败。当我试图将JDK从1.7更改为1.6时,我遇到了一个奇怪的行为。

即使我将环境变量从1.7改为1.6 JDK版本,当我在cmd中运行java.exe -versionjava -version时,它仍然给出较早的版本。但是当我运行javac -version时,它给出了1.6版本。

到目前为止我所做的是,

在用户环境变量中

  • C:Program FilesJavajdk1.6.0_43的类路径(JDK安装路径)
  • 添加java_home变量,并将路径更改为C:Program FilesJavajdk1.6.0_43 (JDK安装路径)
  • 更改路径到C:Program FilesJavajdk1.6.0_43bin (Java bin)

在系统环境变量中

  • 添加C:Program FilesJavajdk1.6.0_43binCLASSPATH
  • 创建JAVA_HOME变量并添加C:Program FilesJavajdk1.6.0_43bin

有一个与Java相关的变量,叫做QLJAVA, path被设置为C:Program Files (x86)Javajre7libextQTJava.zip,我也删除了这个变量。之前,我编辑了CLASSPATH,这是与那里相同的路径

<<p> 我的问题/strong>,
  1. 为什么使用java -version时选择1.7,为什么运行javac -version时给出不同的结果。还是我已经做错了什么?
  2. 什么是QLJAVA变量,它的用途是什么,如何使用最后变成了系统变量。

  3. 为什么要改到1.6,难道没有向后兼容性吗?

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

JAVA_HOME应该指向java安装路径
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代替Program Files.

回答您的问题:

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

  2. 关于QTJAVA,我还没有遇到过,所以我不能给出一个具体的答案。至于它是如何到达那里的,好吧,一些软件/程序在你安装它们时修改了环境变量,所以它们就这样到达那里了。

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

加载器java.exe通常放在WindowsSystem32目录中,尽管在JDK中也有副本。编译器javac.exe总是在JDK中。这就是你所看到的一切的根源。

java.exe的副本很有可能出现在路径中比WindowsSystem32java.exe更早的文件夹中。

也有可能v1.6的安装无法覆盖旧的java.exe,因为您没有足够的权限来写入WindowsSystem32,尽管在这种情况下应该提供一个错误。

我知道弄清楚发生了什么最好的方法是安装which.exe命令,你可以在Cygwin或MinGW中找到。当您输入which java.exe时,您将看到导致问题的java.exe v1.7的路径。调整路径、删除或重命名文件

最新更新