提问者:小点点

JDK和JRE版本混淆


我使用Java已经有一段时间了,JDK/JRE版本最近给我带来了不少麻烦。 我正在使用Intellij IDEA IDE进行开发,当然它使用的是JDK的最新版本14。 然而,当我试图在IDE之外执行用JDK14编译的软件时,我得到一个错误,即JRE不够新,无法运行该软件。 所以我更新了我的电脑和另一台机器上的Java,并试图再次运行,但没有任何成功。 经过一番挖掘,我调整了我的机器以使用兼容的JDK14中包含的JRE。

然而,我不得不这么做是有点奇怪的,有人会认为Java的最新版本应该足以运行用JDK(14)的最新版本制作的应用程序。 现在,Java是版本8构建251,并表示没有更新可用。 如果JDK14已经发布了一段时间,为什么他们不更新他们发布的Java版本呢?

这个问题得到了部分解决,因为只有我用于开发的机器能够执行创建的应用程序。 我派他们去的其他人已经无法运行他们,尽管他们有最新版的Java。 此外,获得最新的JDK也是一件痛苦的事,尤其是在如何摆脱旧版本,将路径点更改为最新版本,获得正确的软件包(Open/Oracle JDK)以及为windows和Linux的几个发行版执行这些操作方面经验有限的情况下。 怎么回事? 我是不是从错误的地方把Java和其他人都弄错了? 为什么甲骨文这样做,为什么没有Java更新,因为显然存在一个更新的版本?


共3个答案

匿名用户

从Java-11开始,单独的JRE不再存在。 换句话说,如果您使用的是Java-11或更高版本,您应该只关心JDK。

您应该从计算机上卸载JRE-8,并确保path变量中的JDK-14bin文件夹。 有些应用程序甚至需要java_home才能工作,因此您应该确保您的系统有一个名为java_home的环境变量,并且将其值设置为JDK-14的根文件夹(即在您的JDKbin之上一级)。

问:我的客户应该做什么来运行我在JDK-14上编译的应用程序?

答:您的客户端必须安装JDK-14。 另外,检查这个线程以获得一些替代方案。

匿名用户

您混淆了IntelliJJDK在OS上的使用方式。 IntelliJ现在经常附带它的JDK二进制文件(但即使这样也可以配置,IntelliJ也可以配置为使用您提供给它的任何JDK/JRE构建); 但是,如果您在IntelliJ之外运行Java应用程序,那么您很可能使用的是本地安装在操作系统上的Java,它可能通过JAVA_HOME环境变量引用。

我建议:

  1. 检查shell中的Java版本(因此,您将看到当您运行Java应用程序时,您的OS会生成什么JVM实例);
  2. 检查shell中的where Java(在Windows上,或which-在Linux上),以查看操作系统上可用的所有Java二进制文件。

匿名用户

尝试卸载Java SE开发工具包和Java JRE(如果您的机器中有两者),并重新安装两者,JDK和JRE两者,我正在分享我的谷歌驱动器链接,在那里您可以找到最新版本的JDK和JRE,当您完成安装后,在您的机器的环境变量中添加bin文件夹路径。