java - JDK和JRE版本混淆
问题描述
我使用 Java 已经有一段时间了,JDK/JRE 版本最近给我带来了很多麻烦。我正在使用 Intellij IDEA IDE 进行开发,它当然使用最新版本的 JDK,14。但是,当我尝试在 IDE 之外执行使用 JDK 14 编译的软件时,我收到一个错误,即 JRE 不够新运行这个软件。所以我在我的电脑和另一台机器上更新了 Java 并尝试再次运行但没有成功。经过一番挖掘,我调整了我的机器以使用兼容的 JDK 14 中包含的 JRE。
然而,我不得不这样做有点奇怪,有人会认为最新版本的 java 应该足以运行使用最新版本 JDK (14) 制作的应用程序。现在 Java 是第 8 版 build 251,并表示没有更新的更新可用。如果 JDK 14 现在已经发布了一段时间,他们为什么不更新他们发布的 Java 版本呢?
问题已部分解决,因为只有我用于开发的机器能够执行创建的应用程序。尽管拥有最新版本的 java.lang. 获取最新的 JDK 也是一件痛苦的事,特别是在如何摆脱旧版本、将路径指向最新版本、获取正确的包(open/oracle JDK)并为 Windows 和几个执行此操作方面的经验有限时linux的分布。到底是怎么回事?我是否从错误的地方获得了 Java 以及其他所有人?为什么 oracle 这样做,为什么没有 java 更新,因为显然存在较新的版本?
解决方案
您对操作系统上的使用方式IntelliJ
或使用方式感到困惑。现在, IntelliJ通常带有其 JDK 二进制文件(但即使可以配置,也可以将 IntelliJ 配置为使用您将提供给它的任何 JDK/JRE 构建);但是,如果您在IntelliJ 之外运行 Java 应用程序,则很可能您正在使用本地安装在操作系统上的 Java,这可能通过您的环境变量进行引用。JDK
JAVA_HOME
我建议:
- 签
java -version
入您的 shell(因此您将看到您的操作系统在运行 Java 应用程序时启动了哪个 JVM 实例); - 检查
where java
(在 Windows 上,或which
- 在 Linux 上)您的 shell,以查看您的操作系统上可用的所有 Java 二进制文件。
推荐阅读
- r - 为什么 weekdays 在德语中返回工作日?
- verilog - 等效于verilog文件中的系统verilog打包输入输出
- python - 使用多个关键字对象引用的 Django Rest Framework 对象
- python - 将值输入到列表中并循环直到给出参数
- react-native - React-Native 导航:在组件之间共享数据,当状态改变时更新参数
- r - 为什么数据类型会变成“逻辑”?R
- python - 以下代码运行没有任何错误,但记录未插入表中
- javascript - 合并 javascript
- algorithm - 检查对象是否在矩阵的范围内
- python-3.x - 如何在python3中替换字符串中的某个数字?