我正在使用 JDK 12 编写一个 Java 应用程序。
从 Java 11 开始,Oracle 不提供任何 JRE。因此,JDK 11 和 JDK 12 没有 Java 运行时环境。
如何执行使用 jdk 11 或 jdk 12 编写的 jar?
我尝试使用 jre 8 并且它有效。
如何使用带有 jre 8 的 jdk 12 编写打开的 jar 文件?我在互联网上读到,从 Java 11 开始,jar 文件里面有一点 jre。但是我无论如何都需要java 8来打开它们?
Java 11 和 Java 12 JDK 都具备运行打包 jar 文件所需的一切。假设您的安装是正确的并且您有正确的环境变量,只需执行以下操作:
java -jar <jar_file>
应该为您正常工作。现在的 JDK 不像过去那样具有特定的 jre 文件夹,但这并不意味着它们不提供运行 Java 应用程序所需的任何东西。只需查看 bin 文件夹即可了解更多信息。
现在关于你的第二个问题。是否可以使用较旧的 jre 运行已针对较新版本编译的 java 应用程序。那么答案是取决于。通常运行从较新 jdk 对较旧 jre 生成的字节码将导致类兼容性错误。这可以通过在兼容模式下编译您的应用程序来规避(很可能是您的情况)。
所以总结一下。继续安装正确的 Java 版本(理想情况下是您开发并计划部署的版本)。正确设置您的环境,运行任何东西都不会出现问题。