一个bug重温对JRE和JDK的关系思考
前几天做一个springboot项目时,导入的JAVA版本是17,然后后面想更贴近下企业中使用的JDK版本就改成了JDK 1,8,然后就编译错误,bug如下
java: java.lang.UnsupportedClassVersionError: org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
这个bug的意思是告诉我们,我们的工程使用的是高版本的java去编译,但是使用低版本的java去运行它,更具体来说,我们使用了java17去编译完了工程文件,然后使用Java8去run这个工程。
关于这个bug如何修复,建议stackOverFollow,答案无非是统一下jdk版本和jre版本,但是我这个bug是由于引入的springboot版本是3.x版本的,默认使用java17,所以引入springboot项目时,如果项目使用java8那么就要引入2.x版本的springboot(重启解决百分百问题)
关于bug,这里涉及两个概念:编译和运行。这里解释一下,java是混合性语言,也就是Java即是编译型的,也是解释型语言,从编译角度,java任何工程文件都需要先进行编译,但是编译完了并不是直接运行,而是解释在jvm上的,这里的java运行环境,就是jre(java runtime environment),而jdk是java开发工具,里面包含了很多java大牛造的轮子,这样方便更多的程序员工作(感谢大牛赏口饭吃),总得来说jdk包含了jre和一些jar包,同时jre包含了jvm,在实际工作中,我们可以本地编译项目,编译完了部署在服务器中,因此本地需要安装jdk和服务器一般为了节省性能,可以只安装jre。
一个bug重温对JRE和JDK的关系思考的更多相关文章
- Java学习 1.2——简述JVM,JRE,JDK的关系
在上一节中,我们了解了JVM相关的知识,有兴趣的话可以先去看一下: Java学习 1.1——(JVM介绍)Java为什么能够跨平台? 这个篇主要分享的是JRE,JDK,JVM三者的区别,简言之: JD ...
- 简述JVM、JRE、JDK的关系及作用
1.JVM:java虚拟机 . 作用:保证java语言跨平台. 2.JRE:java运行环境 jre=java虚拟机+核心类库. 作用:java程序的运行环境. 3.JDK :java开发工具集.JD ...
- java-01 JAVA三大版本比较&JDK、JRE、JVM 的关系
1. java三大版本比较 1.1 java SE javaSE 是java标准版的简称,其定位是个人计算机应用(应用原生界面比较ugly) 全称:Java Platform Standard Edi ...
- JRE,JVM,JDK
JRE,JVM,JDK的关系.JRE(Java Runtime Environment)java运行环境,我们可以把它看成是一个操作系统.也就是说JRE提供了Java执行的软件平台. JVM (Jav ...
- 给JDK提的一个bug(关于AbstractQueuedSynchronizer.ConditionObject)
1. 背景 之前读JUC的AQS源码,读到Condition部分,我当时也写了一篇源码阅读文章--(AbstractQueuedSynchronizer源码解读--续篇之Condition)[http ...
- jdk jre jvm 三者之间关系
JDK JDK是java开发工具包,是Sun公司针对Java开发员的产品. JDK 中包含JRE,在JDK安装的目录下有一个叫jre的目录,里面有两个文件夹,bin/和lib,其中bin就是j ...
- jvm、jre、jdk
JVM和JRE浅谈 Java运行时环境JRE包含:Java虚拟机.库函数.运行Java应用程序和Applet所必须的文件,JDK(又称SDK)包含:JRE的超集.编译器.调试器等开发工具. java平 ...
- JRE与JDK的区别
转自:http://swiftlet.net/archives/639 1. 定义JRE(Java Runtime Enviroment)是Java的运行环境.面向Java程序的使用者,而不是开发者. ...
- JRE和JDK的区别
1. 定义 JRE(Java Runtime Enviroment)是Java的运行环境.面向Java程序的使用者,而不是开发者.如果你仅下载并安装了JRE,那么你的系统只能运行Java程序.JRE是 ...
- jdk、jre、jvm的关系
JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:\Program Files\Java\jdk1.5.x\目录下的JRE.而C:\Program Files\Java\ ...
随机推荐
- 解决href 不下载直接跳转到新的页面
1.下载 不支持所有浏览器 2 var eleTextarea = document.querySelector('textarea'); var eleButton = document.query ...
- Python基础数据类型-list(列表)
a = [1, 2, 3] a.append([1, 4]) a.append(8) a.append([8, 9, '10']) # 添加的是整体,即:将输入对象添加到列表末尾 print(a) # ...
- linux开机自启动tomcat或者其他应用
开机自启动Tomcat: 1.创建一个脚本,touch tomcat_start.sh 2.编辑脚本,vim tomcat_start.sh #!/bin/sh #chkconfig: 2345 8 ...
- uniapp项目 hbuilder工程转cli工程 hbuilder工程不可以用命令行打包
hbuilder工程不可以用命令行打包,只能用自带的发行手动打包 cli工程可以用命令行打包,可以配置多环境 1.安装空的cli项目 vue create -p dcloudio/uni-preset ...
- Treewidget节点的增加
父节点的创建 // 隐藏QTreewidget标题头 ui->treeWidget->header()->hide(); // 实现Treewidget父节点的挂载 // 创建存放Q ...
- IDEA 2018.3.*本地启动tomcat项目无法设置Application context localhost 404
记录一个开发中遇到的坑,网上找了好久才找到一个能解决的办法,特此转载一下. 旧版的idea启动web项目,在tomcat配置环节,有设置Application content的功能.我们可以设置成&q ...
- CentOS6.x 7.x 8.x 服务器系统初始化设置
服务器设置例子一.挂载硬盘1.磁盘分区fdisk -l #查看设备,一般可以看到设备名为/dev/xvdb,或者为/dev/vdb(阿里云io优化型)fdisk /dev/xvdb #对磁盘进行分区, ...
- Qt之新建界面动态库并使用
动态库的创建 动态库的使用 动态库的创建 //SharedLib_global.h #ifndef SHAREDLIB_GLOBAL_H #define SHAREDLIB_GLOBAL_H #inc ...
- localtime函数
localtime函数: 将时间数值变换成本地时间,考虑到本地时区和夏令时标志; 原型: struct tm *localtime(const time_t * calptr); 头文件 <ti ...
- PHP做API开发该如何设计签名验证
前言 开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证. 我们在设计签名验证的时候,请注意要满足以下几点: 可 ...