我最近检查了我的Java版本。我运行了java -version
命令,发现我正在使用java version 1.7.0_09
。但是当我试图检查C:\Program Files\Java\
目录时,我似乎找不到相同的版本。我只看到以下内容:
等等......
我的程序仍在运行,但我只是尝试手动编译所有内容,并了解操作系统如何处理Java。
另一件奇怪的事情是,我试图查看环境变量设置,但它没有说明jdk1.7.0_09
。
路径:
只是想让你们知道它以某种方式自动成为一个jre。
完整目录为C:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09
,它只是名为lzma.dll
的文件。
但是,我有另一个名为C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07
的目录。其中的文件是:
答案 0 :(得分:15)
可以在计算机上并排放置许多JRE。
如果在Windows上正确安装了JRE,则每个版本的信息都会存储在注册表中。安装过程在系统路径(%SYSTEMROOT%\ System32 )中安装特殊java.exe 。所以你不需要改变PATH,因为这个特殊的java.exe会找到当前的JRE。在命令行中,键入java -version以显示当前安装的jre版本。
使用1.6版本,现在可以选择不同于最后一个的JRE安装而不进行任何注册表修改。
JRE安装在密钥
的注册表中列出HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java运行时环境
采用这个简单的测试类
public class ShowVersion {
public static void main(String args[]) {
System.out.println(System.getProperty("java.version"));
}
}
在安装了1.6和1.5的系统上。如果您输入
> java ShowVersion
它可能是1.6 JRE,因为它是最后一次安装的。
要强制使用1.5 JRE,请使用此命令行。
> java -version:"1.5" ShowVersion
如果字节码与给定的JRE不兼容,那么它当然不会起作用。
您始终可以提供使用特定安装的完整路径。以这种方式启动JVM根本不使用注册表设置。
>"C:\Program Files\Java\j2re1.4.1_02\bin\java" -version
java version "1.4.1_02"
答案 1 :(得分:2)
回答“实际”问题:
另一件奇怪的事情是,我试图检查环境 变量设置,它没有说jdk1.7.0_09。
这里发生的是您安装了jdk1.7.0_07然后自动升级它。发生这种情况时,它仍然使用您最初安装的旧文件夹名称。
安装Java之后,我通常会复制JDK目录并用版本号命名。然后,我可以像这样直接调用某个java:
@echo off
:: testjava.bat
set JAVA_HOME=C:\JDK1.x.xx
set PATH=%JAVA_HOME%\bin;%PATH%;.
java -version
pause
所以,我的建议是设置你的JAVA_HOME系统变量和PATH变量,如上所示。这将覆盖系统上的所有内容,以便您选择的JDK是JRE的默认值。
答案 2 :(得分:2)
评论中的AppData
路径不在您的路径上(据推测,无论如何),因此可能不是它正在使用的路径。不幸的是,Windows上没有which
命令。
如果您编辑路径并将C:\Program Files\Java\bin
目录移动到列表的最开头并仍然打印1.7.0_09
,那么您的JDK7u7文件夹中就会出现JDK7u9。如果没有,请浏览到路径上的所有其他目录并逐个打开它们,直到找到相应的java
文件。幸运的是,你的路径 比我的短。
请注意:
> java -version
它也可能会查找java.bat
和其他非exe
扩展程序,因此在您搜索路径时请留意这一点。尝试运行:
> java.exe -version
这样你知道你正在寻找exe
文件。
你可以尝试的最后一件事:
> "C:\Program Files\Java\jdk1.7.0_07\bin\java" -version
如果这返回1.7.0_09
,那么发生了一些事情,就地发生了更新你的JDK,这不应该发生,AFAIK(但我可能是错的)。
答案 3 :(得分:2)
添加以下内容可解决您的问题:
set JAVA_HOME="your jdk path"
set PATH=%JAVA_HOME%\bin;%PATH%.
此外,如果它不起作用,则表示您已为多个Java版本设置PATH
,请仅包含最新版本,并从PATH
变量中删除所有版本。