如何在Windows上更改Java运行时版本(7)?

tom*_*nkt 58 java windows registry controls panel

如何在Windows上更改Java运行时版本.

我安装了Java 7进行一些测试,现在我需要旧的java6作为系统默认值,但我不想卸载Java 7(我需要它用于以后的测试).我可以在控制面板/ Java/JRE选项卡中更改系统使用的JRE吗?我可以更改/编辑/添加/删除用户使用的版本,但不能更改系统使用的版本.

Car*_*icz 75

对于Java 应用程序,即(通常)作为.jar文件传递的程序,以及java -jar xxx.jar通过执行相同操作的快捷方式启动的程序,将要启动的JRE将是第一个发现的程序PATH.

如果您安装了JRE或JDK,那么找到.exes 的可能位置就在下面的目录下面 C:\Program Files\JavaSoft\JRE\x.y.z.不过,我发现了一些"开箱即用" Windows安装到(也?)有复印件java.exejavaw.exeC:\winnt\system32(NT和2000)或C:\windows\system(Windows 95中,98).这通常是Java的老版本:1.3,也许吧?您需要java -version在命令窗口中检查您是否运行了一些过时的Java版本.

您当然可以通过在命令行或快捷方式定义中明确声明java.exe/javaw.exe的路径来覆盖PATH设置,甚至可以不使用它.


如果您正在从浏览器运行applet,或者也可能运行Java Web Start应用程序(它们看起来像应用程序,因为它们有自己的窗口,但是您从浏览器启动它们),JRE的选择由一组注册表决定设置:

Key: HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment
Name: CurrentVersion
Value: (e.g.) 1.3
Run Code Online (Sandbox Code Playgroud)

使用此方案创建更多注册表项:

(e.g.) 
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\1.3   
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\1.3.1
Run Code Online (Sandbox Code Playgroud)

即一个用于主要版本,一个用于次要版本号.这些键中的每一个都具有这些值(示例所示):

JavaHome    : C:\program Files\JavaSoft\JRE\1.3.1
RuntimeLib  : C:\Program Files\JavaSoft\JRE\1.3.1\bin\hotspot\jvm.dll
MicroVersion: 1
Run Code Online (Sandbox Code Playgroud)

...并且您的浏览器将查看这些设置以确定要启动的JRE.

由于Java版本经常发生变化,现在有一个名为"Java控制面板"的"向导",用于手动切换浏览器的Java版本.这适用于IE,Firefox以及其他可能的Opera和Chrome:它是Windows System Settings应用程序中的"Java"小程序.您可以选择任何一个已安装的JRE.我相信该向导会摆弄这些注册表项.

如果你像我一样,只需擦除目录就可以"卸载"旧Java版本,你也可以在选择中找到这些"幽灵"; 所以请确保您选择的JRE对应于完整的Java安装!


其他一些答案建议设置环境变量JAVA_HOME.这是同时过时的建议.Sun围绕Java 2认识到这种环境设置

  1. 不可靠,因为用户经常设置错误,并且
  2. 不必要的,因为运行时很容易找到Java库目录,知道它们位于相对于启动java.exe或javaw.exe的路径的固定路径中.

几乎没有任何现代Java软件需要或尊重JAVA_HOME环境变量.


更多信息:

...以及有关多版本支持的一些有用信息:

  • 默认的Java7向导还将java.exe,javaw.exe和javaws.exe安装到Windows 7上的C:\ Windows\System32 \中.这不是遗留问题.反正很棒的答案! (5认同)

Mia*_*Mia 58

我习惯于在类UNIX机器上工作,但最近我不得不在Windows 7机器上使用Java做一些工作.我遇到了这个问题,这就是我解决了它.它对我有用,所以我希望它可以用于将来可能遇到这个问题的人.

考虑到驱动器C上的默认Java安装,会暴露这些步骤.如果您的安装不是默认安装,则应更改必要的内容.

在Windows 7上更改Java默认VM

假设我们已经安装了Java 8,但出于任何原因我们想要保留Java 7.

1-以管理员身份启动cmd

2-转到 C:\ProgramData\Oracle\Java

3-将当前目录javapath重命名为javapath_ <version_it_refers_to>.例如:rename javapath javapath_1.8

4-创建javapath_ <version_you_want_by_default>目录.例如:mkdir javapath_1.7

5- cd进入它并创建以下链接:

cd javapath_1.7
mklink java.exe "C:\Program Files\Java\jre7\bin\java.exe"
mklink javaw.exe "C:\Program Files\Java\jre7\bin\javaw.exe"
mklink javaws.exe "C:\Program Files\Java\jre7\bin\javaws.exe"
Run Code Online (Sandbox Code Playgroud)

6-光盘拿出来,并创建一个目录链接javapath指向期望javapath.例如:mklink /D javapath javapath_1.7

7-打开寄存器并将密钥HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion更改为值1.7

此时如果执行,java -version您应该看到您使用的是java版本1.7:

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)

8-最后创建环境变量JAVA_HOME是个好主意.为此,我在C:\ Program Files\Java中创建一个名为CurrentVersion的目录链接,指向我感兴趣的Java版本.例如:

cd C:\Program Files\Java\
mklink /D CurrentVersion .\jdk1.7.0_71
Run Code Online (Sandbox Code Playgroud)

9-一旦完成:

  • 右键单击我的电脑,然后选择属性.
  • 在Advanced选项卡上,选择Environment Variables,然后编辑/创建JAVA_HOME以指向JDK软件所在的位置,在这种情况下,C:\ Program Files\Java\CurrentVersion

  • 最好的答案就像一个魅力,感谢分享. (3认同)

Jul*_*les 25

从Java 1.6开始,在%windir%\ system32中安装了一个java.exe,它支持"-version"命令行选项.您可以使用它来选择要运行的特定版本,例如:

java -version:1.7 -jar [path to jar file]
Run Code Online (Sandbox Code Playgroud)

将在java 1.7中运行jar应用程序(如果已安装).

请参阅此处的Oracle文档:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html


Asa*_*ena 6

我按照浏览器的建议将Java版本更新为8.但是我选择卸载之前用于编码项目的Java 6版本.当我在cmd中的"java -version"中输入命令时 它显示1.8并且我无法启动在Java 1.6上运行的eclipse IDE.

当我为浏览器安装Java 8更新时,它已将"PATH"系统变量更改为"C:\ ProgramData\Oracle\Java\javapath",并将其更改为开头.新添加的路径指向Java vesion 8.所以我从"PATH"系统变量中删除了该路径,一切正常.:)