我已经开始了一个专门说使用1.6 JDK防止表单test failings.的项目 当我试图将JDK从1.7改为1.6时,我遇到了一种奇特的行为。
即使我将环境变量从1.7更改为1.6 JDK版本,但当我在java.exe -version
中运行java -version
或cmd
时,它仍会提供早期版本。但是当我运行javac -version
时,它会给出1.6版本。
到目前为止我做的是,
在用户环境变量中,
C:\Program Files\Java\jdk1.6.0_43
(JDK安装路径)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
C:\Program Files\Java\jdk1.6.0_43\bin
有一个与Java相关的变量,名为QLJAVA,路径设置为C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip
,我也删除了该变量。
之前我编辑了CLASSPATH
这就是那里的路径
我的问题,
javac -version
时会得到不同的结果。或者我已经做了什么错了?什么是QLJAVA
变量,它的用途是什么以及如何使用
最终进入系统变量。
为什么要更改为1.6,没有任何后备兼容性。?
答案 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
代替程序文件。
回答你的问题:
您的PATH环境变量指向java和javac的不同路径。只需将%JAVA_HOME%\bin
设置为PATH变量的第一个条目,它就应该选择正确的JAVA版本。
至于QTJAVA,我还没有遇到过,所以我无法给出具体答案。至于如何到达那里,一些软件/程序在安装时修改环境变量,以便他们以那种方式实现。
它应该向后兼容或尝试。我没有看到代码,也没有真正尝试过JDK 7,但根据你给出的链接上的问题(https://tickets.openmrs.org/browse/TRUNK-3142),它看起来像是一个JDK 7问题。
希望这有帮助。
答案 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的路径。调整路径,删除或重命名文件。