Java版本兼容性困惑:JDK与Java SE对应关系及运行问题咨询
Java版本兼容性与JDK/Java SE对应关系解答
关于Java SE 8运行高版本JDK编译程序的问题
Java SE 8(即JRE 8)默认无法直接运行用JDK 17、18、19或20编译的程序。这是因为Java的版本兼容性遵循核心规则:高版本JDK编译生成的字节码文件会带有对应版本的格式标识,低版本JRE无法识别更高版本的字节码格式,因此会弹出“由更高版本制作”的报错。
不过可以通过编译参数调整,让高版本JDK生成能在低版本JRE上运行的字节码。比如使用JDK 20编译时,添加--release 8参数(JDK 9及以上推荐使用该参数,它会严格适配Java 8的API规范),或者使用-target 8 -source 8参数,这样编译出的JAR包就能在Java SE 8环境正常运行。
JDK与Java SE的对应关系
- JDK(Java Development Kit)是包含编译器、调试工具等开发组件的套件,Java SE(Java Platform, Standard Edition)是Java的标准版平台规范,涵盖JRE(Java Runtime Environment,运行时环境)和核心类库等内容。
- 二者版本号完全一一对应:
- JDK 8 ↔ Java SE 8(俗称Java 8)
- JDK 17 ↔ Java SE 17
- JDK 18 ↔ Java SE 18
- JDK 19 ↔ Java SE 19
- JDK 20 ↔ Java SE 20
- 简单来说,JDK是Java SE规范的具体实现,包含开发所需的全部工具;你下载的Java 8u361本质是JRE 8,属于Java SE 8的运行环境,不包含开发相关工具。
内容的提问来源于stack exchange,提问作者Wesley Peart
相关产品推荐
相关产品推荐

