java - 使用 JRE 或 JDK 编译的 Eclipse

标签 java eclipse virtual-machine

我心中有一个问题,我应该指出我知道 JDK 和 JRE 之间的区别。我不是 Java 的新程序员。

我想问的是在 Eclipse 中我可以在 window> Preferences 中指定编译环境(如果我错了请纠正我)但是我们也可以为特定项目更改它。

好的。我在选项中添加了 jre 和 jdk 文件夹。我可以同时使用两者。 但是JRE里面没有javac(没有java编译器)。那么怎么可能有些项目需要我改成jre1.7才能COMPILE呢? 我遇到了一些 minor.major 版本错误,设置 JRE 解决了我的问题?

这怎么可能?

事实上,现在我意识到了一些事情。 好的,问题有点变化。 我看到这些是 VM 而不是编译器。我明白了。

JDK里面也有JRE吗?因此,如果我指定 JDK1.8,我将 jre1.8 设置为 VM,如果我指定 JRE1.7,我将 jre1.7 设置为 VM?

是吗?

这会让人感到困惑。为什么JDK里面有JRE?

enter image description here

最佳答案

JDK 内部有完整的 JRE(常规 Java VM),以便您可以运行您将使用它开发的内容。

理论上,有人可以只使用工具而不使用 JRE 来制作一些小型 JDK,但是对于哪个工具版本与哪个 JVM 版本一起运行(大多数 JDK 工具需要运行 JVM),这会造成更多的混淆。看看你,有多少人只有这个问题?因此它捆绑在一起,工具和 JRE 作为一个整体命名为 JDK,因此您可以保证这些 JRE 和工具将一起工作。

JRE - Java 运行时环境 - 允许您运行 java 程序

JDK - Java 开发工具包 - 允许您运行和开发 java 程序

JDK = JRE + 开发者工具

另请注意,您可以为 java 编译过程选择两件事:

与源版本的兼容性 - 这基本上是您可以使用的语法。

与 VM 版本的兼容性 - 这是您可以运行已编译二进制文件的最低 VM 级别。

您帖子中的示例:如果您将某些东西编译为 Java 8,则无法在 Java 7 上运行它,这是您遇到的次要/主要版本问题。但相反的情况(在 Java 8 上为 Java 7 运行一些东西)是有效的。

在您的示例中,JDK8JRE7 都只是功能齐全的 VM,但 JDK8 内部还有额外的(与 JRE 相比)开发工具。

关于java - 使用 JRE 或 JDK 编译的 Eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39953797/

相关文章:

android - 库,它是另一个库的依赖项,在 cordova run android 中无法识别

windows - SSH 到 Windows 中的 Vagrant box?

java - 从 JWT 获取 Set<String> 类型的对象?

java - tomcat 8 jsp 如何包含/导入 jsp 页面

java - 使用 ECC Curve25519 在 Java 中加密/解密数据

java - 不创建插件就不能在 Eclipse 中使用 JFace 和 SWT

java - 如何在 Java 或 Scala 中从/向 parquet 文件读取和写入 Map<String, Object>?

c++ - 如何在 Windows + Eclipse + Cygwin + GCC 下设置 wxWidgets

centos - 如何阻止除主机 IP 之外的 VM 上的所有流量?

linux - 跨不同物理服务器同步 Vagrant VM