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

时间:2013-03-27 04:27:42

标签: windows configuration java

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

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

到目前为止我做的是,

在用户环境变量中,

  • classpath到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

有一个与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,没有任何后备兼容性。?

2 个答案:

答案 0 :(得分:10)

以下是为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代替程序文件。

回答你的问题:

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

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

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

  4. 希望这有帮助。

答案 1 :(得分: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的路径。调整路径,删除或重命名文件。