2013-03-27 82 views
0

我已经开始使用1.6 JDK来防止表单test failings. 当我试图将JDK从1.7更改为1.6时,遇到了特殊行为。将JDK更改为另一个版本问题

即使我改变环境变量形成1.7至1.6的JDK版本,当我在cmd运行java.exe -versionjava -version,它仍然给早期版本。但是当我运行javac -version时,它提供了1.6版本。

我做什么,到目前为止是,

在用户环境变量,

  • classpath中C:\Program Files\Java\jdk1.6.0_43(JDK的安装路径)C:\Program Files\Java\jdk1.6.0_43(JDK安装路径)
  • 添加JAVA_HOME变量,改变路径
  • 更改为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的版本1.7时相同的路径,当跑javac -version为什么给出不同的结果。或者我已经完成了什么工作?
  2. 什么是QLJAVA变量,它有什么用处以及 如何在系统变量中出现。

  3. 为什么要更改为1.6没有任何后卫的兼容性。

+0

假设你在Windows上,在更改环境变量后是否重新打开了提示? – 2013-03-27 04:56:36

+0

每当我做了这些更改时,我都会重新启动机器。 – 2013-03-27 05:55:51

回答

9

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

JAVA_HOME应指向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% 

此外,在路径中其它条目可能指向不同版本的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的问题。

希望这会有所帮助。

+0

谢谢你帮助我学习这个新东西。 – 2013-03-27 07:29:29

4

装载机java.exe通常被放置在Windows\System32目录中,虽然也有在JDK副本。编译器javac.exe始终在JDK中。这是你所看到的根源。

有一个很好的机会,复制java.exe出现在您的路径中早于Windows\System32\java.exe的文件夹中。

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

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

+0

非常感谢,这解决了疑问,您是否知道这个QLJAVA变量是什么。? – 2013-03-27 06:00:53