52

我的情况是我已经安装了 JDK,但我无法在浏览器中运行小程序(我可能没有安装 JRE)。

但是,当我安装 JRE 时,它会破坏我的 JDK 作为默认运行时。这几乎破坏了一切(Eclipse、Ant)——因为它们需要服务器 JVM。

这些天没有JAVA_HOME环境变量 - 它似乎只是使用了一些注册表魔法(设置系统路径也没有用)。以前,我只是在使用它恢复 JDK 后卸载了 JRE。这次我想正确地修复它。

这也体现在 jre 自动更新程序上——曾几何时,我有一个使用 JDK 和 JRE 的工作设置,但它更新并破坏了一切。

4

9 回答 9

45

这在 Windows 上有点痛苦。这就是我所做的。

将最新的 Sun JDK,例如6u11安装在类似路径中c:\install\jdk\sun\6u11,然后让安装程序将公共 JRE 安装在默认位置 ( c:\program files\blah)。这将为大多数事情设置您的默认 JRE。

根据需要安装较旧的 JDK,例如5u18c:\install\jdk\sun\5u18但不要安装公共 JRE。

在开发过程中,我有一个小批处理文件,用于为每个 JDK 版本设置命令提示符。基本上只是设置JAVA_HOME=c:\jdk\sun\JDK_DESIRED然后设置PATH=%JAVA_HOME%\bin;%PATH%。这会将所需的 JDK 放在路径中的首位,并且任何辅助工具(如 Ant 或 Maven)都可以使用该JAVA_HOME变量。

该路径很重要,因为大多数公共 JRE 安装都将链接的可执行文件放在c:\WINDOWS\System32\java.exe,这通常会覆盖大多数其他设置。

于 2009-02-15T22:10:57.527 回答
7

我已经在属性对话框中修补了我的 eclipse 启动快捷方式的行为

"E:\Program Files\eclipse\eclipse.exe"

"E:\Program Files\eclipse\eclipse.exe" -vm "E:\Program Files\Java\jdk1.6.0_30\bin"

Eclipse 文档中所述

它只是一个补丁,因为它取决于修复问题的快捷方式......

另一种方法是在 eclipse 初始化文件中永久设置参数。

于 2012-01-16T02:21:38.290 回答
4

我刚刚遇到了这个问题(Java 1.8 与 Windows 7 上的 Java 9),我的发现是:

简洁版本

默认似乎是(因为路径条目)

c:\ProgramData\Oracle\Java\javapath\java -version

选择您想要的版本(测试,在 cmd 中使用 tab 完成,不确定这些数字代表什么),我有 2 个选项,请参阅更长的版本了解详细信息

c:\ProgramData\Oracle\Java\javapath_target_[tab]

删除联结/链接并链接到您的版本(在我的情况下,Java 8 以 181743567 结尾)

rmdir javapath
mklink /D javapath javapath_target_181743567

更长的版本:

在 Java 9 不起作用后重新安装 Java 1.8。安装顺序是 jdk1.8.0_74、jdk-9.0.4 并尝试使用 jdk1.8.0_162 使 Java 8 默认...

jdk1.8.0_162安装后我还有

java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

我在路径中看到的是

Path=...;C:\ProgramData\Oracle\Java\javapath;...

所以我检查了那是什么,我发现它是一个路口(链接)

c:\ProgramData\Oracle\Java>dir
 Volume in drive C is OSDisk
 Volume Serial Number is DA2F-C2CC

 Directory of c:\ProgramData\Oracle\Java

2018-02-07  17:06    <DIR>          .
2018-02-07  17:06    <DIR>          ..
2018-02-08  17:08    <DIR>          .oracle_jre_usage
2017-08-22  11:04    <DIR>          installcache
2018-02-08  17:08    <DIR>          installcache_x64
2018-02-07  17:06    <JUNCTION>     javapath [C:\ProgramData\Oracle\Java\javapath_target_185258831]
2018-02-07  17:06    <DIR>          javapath_target_181743567
2018-02-07  17:06    <DIR>          javapath_target_185258831

那些哈希没有响起,但是当我检查时

c:\ProgramData\Oracle\Java\javapath_target_181743567>.\java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

c:\ProgramData\Oracle\Java\javapath_target_185258831>.\java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

所以要让 Java 8 再次默认,我必须删除这里描述的链接

rmdir javapath

并用我想要的 Java 重新创建

mklink /D javapath javapath_target_181743567

测试:

c:\ProgramData\Oracle\Java>java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

** 更新 (Java 10) **

与 Java 10 类似,只有 javapath 在 c:\Program Files (x86)\Common Files\Oracle\Java\ 这很奇怪,因为我安装了 64 位恕我直言

.\java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
于 2018-02-08T16:25:24.993 回答
1

经过多次尝试,我发现路口的方法更方便。这与如何在 linux 中解决此问题非常相似。

基本上,它包括在您想要在系统中默认使用的 java 的实际版本和实际版本之间建立一个链接。c:\tools\java\default


如何设置:

  1. 下载junction并确保将其放入 PATH 环境变量中
  2. 以这种方式设置您的环境: -PATH指向此 jre -指向 `c:\tools\java\defaultc:\tools\java\default\binJAVA_HOME
  3. 将所有 jre-s 存储在一个文件夹中,例如(如果您在 Program FIles 文件夹中这样做,您可能会遇到一些
    • C:\tools\Java\JRE_1.6
    • C:\tools\Java\JRE_1.7
    • C:\tools\Java\JRE_1.8
  4. 打开命令提示符并 cd 到C:\tools\Java\
  5. 执行junction default JRE_1.6

这将在和之间创建一个联结(或多或少像 linux 中的符号链接)C:\tools\java\defaultC:\tools\java\JRE_1.6

这样,您将始终在c:\tools\java\default.

如果您需要将默认 java 更改为 1.8 版本,您只需执行

junction -d default
junction default JRE_1.8 

然后你可以在没有命令提示符的情况下使用批处理文件 set_jdk8.bat set_jdk7.bat

正如@СӏаџԁеМаятіи 所建议的那样

编辑:从 Windows Vista 中,您可以使用mklink /J default JRE_1.8

于 2015-12-21T13:35:01.130 回答
1

我只是安装了我需要的所有版本的 JDK,最新安装的成为默认版本,所以如果需要,我只需重新安装我想要默认的版本。

于 2018-01-25T17:05:17.530 回答
0

我在他们的 JRE 中安装了几个 JDK(1.4、1.5、1.6)C:\Java。然后我让 Sun 在C:\Program Files\Java.
最近有一个改进,安装在 jre6 中。以前,每个新版本(1.5.0_4、1.5.0_5 等)都有一个不同的文件夹,这会占用大量空间

于 2009-02-15T22:48:15.613 回答
0

运行 .jar 应用程序的另一种方法是为其创建一个 .bat cmd。例如,您的 PC 上安装了 jre10 和 jre8,而 jre10 是您的默认 jre。但是您的 jar 被指定与 jre8 一起使用,以下 cmd 将起作用:

"C:\Program Files\Java\jre1.8.0_181\bin\java.exe" -jar JabRef-4.3.1.jar
于 2018-10-12T03:28:08.817 回答
0

需要从环境中删除 C:\Program Files (x86)\Common Files\Oracle\Java\javapath 并替换为 JAVA_HOME 这对我来说很好

于 2020-09-18T14:49:06.893 回答
0

被这个问题堆积起来,并在2020 年Windows 10中解决了这个问题。我正在使用Java 8 RE14.1 JDK,它运行良好,直到Eclipse升级到版本2020-09。之后我无法运行Eclipse,因为它需要使用Java 11或更高版本,并且只找到了8个版本。这是因为“ Path ”的环境变量的顺序:

环境变量设置

我想C:\Program Files (x86)\Common Files\Oracle\Java\javapath是链接到已安装的 JRE exe 文件(在我的情况下为Java 8)的路径,并且通过在之后下移此链接解决了问题%JAVA_HOME%,这导致了Java 14.1/bin文件夹。

编辑后的EV设置

在请求可执行文件时,环境变量的顺序似乎会影响搜索文件夹的顺序。感谢您的评论或更好的解释。

于 2020-10-26T09:42:06.713 回答