在Windows上, java可执行文件使用Windowsregistry来查找要运行的Java的默认版本。
运行java.exe的副本是通过使用PATH环境variablesfind的。 除非您采取措施更改此设置,否则默认情况下会在Windows目录中find副本。 由于此副本不在Java运行时目录中,因此通过查看registry来查找它。
所以,你需要修改registry,或者把你想要的Java版本放在PATH的Windows目录下。
我也有这个问题。 我正在运行1.6,但想要构build我正在使用1.5的代码。 我已经改变了JAVA_HOME和PATH(用户和系统)无济于事。
答案是1.6的安装程序将java.exe,javaw.exe和javaws.exe放入我的Windows \ System32文件夹(Windows 7)中。
我通过将这些文件重命名为java_wrong.exe,javaw_wrong.exe和javaws_wrong.exe来解决这个问题。 只有这样做之后,它才能获得JAVA_HOME和PATH中定义的正确版本的java。 因此,我重新命名了这些文件,因为这些文件是以一种简单可逆的方式删除的。
希望这可以帮助!
Windows不会忽略任何东西。 这是您的设置的问题; Windows只是使用你提供的。 对JAVA_HOME没有特别的了解。
CLASSPATH也与Windows无关。 到Windows它只是一个环境variables被扩展到文件夹位置。
检查你的%PATH%环境variables。 这是使Windows在另一个之前find的东西。 path(如链接到的post)应该指向%JAVA_HOME%\bin; 。 再一次,你链接的post给了你一个使用batch file设置的方法。
(对于其他人可能不知道这一点:检查%PATH%最简单的方法是打开命令提示符并inputecho %PATH% 。也可以通过右键单击开始菜单右窗格中的Computer然后select“ Properties ,“ Advanced System Settings和“ Environmental Variablesbutton。)
在Windows 8中,您可能需要删除C:\ProgramData\Oracle\Java\javapath目录。
从path
它解决了我的问题。
我遇到过同样的问题。 我安装了一堆Java版本,出于某种原因,使用Java 1.7而不是Java 1.6,尽pipe我在path中指定使用1.6(C:\ jdk1.6.0_45_32 \ bin)。
我必须移动我想要使用的JDK的path(1.6)作为PATH环境variables中的第一个条目,以确保Windows使用1.6而不是1.7。
所以,例如,之前的PATH环境variables是:
C:\Program Files (x86);...;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin
在我把jdk移到第一个之后,它工作了:
C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...;C:\dev\ant181\bin
我猜Java 1.7的Windows安装程序把它安装到PATH中已经存在的其他目录中,因此首先使用而不是指定的自定义PATH条目C:\ jdk1.6.0_45_32 \ bin;
将Path环境variables设置为所需的jdk / bin目录
对于我在'Path'variables中的情况,有一个像“ C:\ProgramData\Oracle\Java\javapath; ”。 这个位置是从java 8的java.exe , javaw.exe和javaws.exe ,它是通过Oracle的jdk.exe新安装的。
我从path中删除了这个文本,其中我的path已经具有%JAVA_HOME%\bin 。
现在,variables'JAVA_HOME'正在控制我想要的Java版本。
在我的情况下,我安装了Java 7和8(两个x64),我想redirect到Java 7,但是一切都设置为使用Java 8. Java使用PATH环境variables:
C:\ ProgramData \ ORACLE \的Java \ javapath
作为查找文件夹运行时间的第一个选项(是隐藏文件夹)。 该path包含3个不能编辑的符号链接。
在我的电脑中,PATH环境variables如下所示:
C:\ ProgramData \ Oracle \ Java \ javapath; C:\ Windows \ System32; C:\ Program Files \ Java \ jdk1.7.0_21 \ bin;
就我而言,它应该是这样的:
C:\ Windows \ System32; C:\ Program Files \ Java \ jdk1.7.0_21 \ bin;
我不得不剪切和粘贴符号链接到其他地方,所以Java找不到它们,我可以在以后恢复它们。
将JAVA_HOME和JRE_HOME环境variables设置为所需的java文件夹的运行时(在我的情况下是Java 7)之后,命令java -version应该显示所需的java运行时。 我说没有必要乱用registry。
在Win7 x64上testing。
这里有一个额外的因素。 除了java安装程序放在任何你要求把它们放在窗口上的java可执行文件之外,java安装程序还会把这些可执行文件的副本放在你的windows system32目录下,所以你可能会用到每一个java可执行文件最近安装。
以防万一,如果您使用.BAT文件作为Windows服务,我会build议卸载Windows服务,并重新安装后,将%JAVA_HOME%更改为指向正确的Java版本。
我安装了Java 7和8,我想redirect到Java 7,但在我的cmd提示窗口中的Java版本显示Java 8。
在最后添加了Java 7 bin目录path( C:\ Program Files \ Java \ jdk1.7.0_10 \ bin )到PATHvariables,但是没有解决,并显示了Java 8.所以我改变了Java 7path到path值和它的工作。
打开一个新的cmd提示窗口,并检查我的Java版本,现在它显示Java 7