SpringBoot项目升级JDK版本(1.8 => 17)

devtools/2024/10/17 18:07:09/

项目:这里使用gitee上一个开源项目做测试《SpringBoot 流媒体项目》
工具:Intellij IDEA

一、下载项目(git clone …)

1、打开 pom.xml 看一下
在这里插入图片描述
2、启动项目,记住它最原本的样子先。成功启动后控制台后面是会输出地址链接的
在这里插入图片描述
在这里插入图片描述

二、切换JDK版本启动测试

1、File 》Project Structure 》Project 切换JDK为17
在这里插入图片描述2、File 》Project Structure 》Modules 切换JDK为17
在这里插入图片描述
3、启动测试!!!不出所料,果然没怎么顺利。这报错是因为少了maven依赖
在这里插入图片描述
4、我这里添加了缺失的依赖再次启动,如下截图,启动成功了
在这里插入图片描述
5、打包测试,报错了…
在这里插入图片描述
意料之内,不会怎么简单的!!!
下面我就将所以要改动的列出来。

三、修改

1、修改框架志JDK17兼容版本

  1. SpringBoot框架要升级到JDK17兼容版本
  2. java.version修改为17

<maven.test.skip>: 这是一个 Maven 属性,用于控制是否跳过测试。如果将其设置为 true,Maven 在执行构建(如 mvn install 或 mvn package)时将不会运行任何单元测试。
作用:当开发者在开发过程中或者在一些特定情况下,不想执行单元测试,可以使用这个配置来跳过测试。例如,代码还没有完善到可以进行测试的程度,或者测试环境还没有准备好。
使用场景:快速构建:在开发过程中,可能需要频繁地进行构建,跳过测试可以加快构建速度。
临时需求:在一些临时性的构建需求中,可能不需要执行测试。

在这里插入图片描述
2、增加所需依赖

mysql 依赖大家按需增加,项目默认使用的是 h2 数据库。我的需求要求使用 MySQL,所以替换掉了。

java"><!-- jdk-17 添加 javafx 依赖 --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>17.0.2</version></dependency><!-- jdk-17 添加 javax.annotation 依赖 --><dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.3.2</version></dependency><!-- jdk-17 添加 persistence 依赖 --><dependency><groupId>javax.persistence</groupId><artifactId>javax.persistence-api</artifactId><version>2.2</version></dependency><!-- jdk-17 添加 persistence 依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!-- jdk-17 添加 mysql 依赖(按需增加)--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version> <!-- 请根据需要修改为最新版本 --></dependency><!-- mybatisplus 升级版本《3.4.3.1 => 3.5.7--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency>

3、修改代码
mybatisplus返回类型修改,修改成Long类型即可
在这里插入图片描述
4、启动
发现控制台已经是修改的版本,完成!!!
在这里插入图片描述

四、总结

1、首先是项目切换到JDK17
2、项目框架要与JDK版本兼容
3、依赖要与JDK版本兼容
4、不同版本的依赖代码有可能也会有小改动
基本就是这样子,我是一步步踩坑过来的,就是启动打包哪里报错就修改哪

pom.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.0</version> <!-- jdk-17 切换版本 --><relativePath /> <!-- lookup parent from repository --></parent><groupId>com.zj</groupId><artifactId>EasyMedia</artifactId><version>1.3.2</version><name>EasyMedia</name><description>一款简单的流媒体服务</description><properties><java.version>17</java.version></properties><dependencies><!-- jdk-17 添加 javafx 依赖 --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>17.0.2</version></dependency><!-- jdk-17 添加 javafx 依赖 --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>17.0.2</version></dependency><!-- jdk-17 添加 javax.annotation 依赖 --><dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.3.2</version></dependency><!-- jdk-17 添加 persistence 依赖 --><dependency><groupId>javax.persistence</groupId><artifactId>javax.persistence-api</artifactId><version>2.2</version></dependency><!-- jdk-17 添加 persistence 依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!-- jdk-17 添加 mysql 依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version> <!-- 请根据需要修改为最新版本 --></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!-- 全量引入 ,包含javacv、ffmpeg、opencv等 --><!-- <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.5.6</version> </dependency> --><!-- 媒体只用到以下两个,javacv、ffmpeg --><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.5.6</version></dependency><!-- ffmpeg全平台引入 --><!-- <dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg-platform</artifactId><version>4.4-1.5.6</version></dependency> --><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>4.4-1.5.6</version><classifier>windows-x86_64</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>4.4-1.5.6</version><classifier>linux-x86_64</classifier></dependency><!-- 工具包 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.21</version></dependency><!-- netty --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.59.Final</version></dependency><!-- h2驱动 --><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><!-- jpa --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- mybatisplus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency><!-- 云台控制sdk需要 --><dependency><groupId>com.jna</groupId><artifactId>jna</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${project.basedir}/sdk/jna.jar</systemPath></dependency><dependency><groupId>com.examples</groupId><artifactId>examples</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${project.basedir}/sdk/examples.jar</systemPath></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope></configuration></plugin></plugins></build><!-- 为了加速下载需要在 pom 文件中复制如下信息 --><repositories><repository><id>aliyun</id><name>Nexus Snapshot Repository</name><url>https://maven.aliyun.com/repository/public</url><layout>default</layout><releases><enabled>true</enabled></releases><!-- snapshots默认是关闭的,需要开启  --><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>aliyun</id><name>Nexus Snapshot Repository</name><url>https://maven.aliyun.com/repository/public</url><layout>default</layout><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories></project>

http://www.ppmy.cn/devtools/124949.html

相关文章

【基础算法总结】字符串篇

目录 一&#xff0c;算法简介二&#xff0c;算法原理和代码实现14.最长公共前缀5.最长回文子串67.二进制求和43.字符串相乘 三&#xff0c;算法总结 一&#xff0c;算法简介 字符串 string 是一种数据结构&#xff0c;它一般和其他的算法结合在一起操作&#xff0c;比如和模拟&…

Winform和WPF的技术对比

WinForms&#xff08;Windows Forms&#xff09;和WPF&#xff08;Windows Presentation Foundation&#xff09;是用于创建桌面应用程序的两种技术。尽管两者都可以用于开发功能强大的Windows应用程序&#xff0c;但它们的设计理念、功能和开发体验都有显著区别。在本文中&…

GitHub简介与安装使用入门教程

1、Git与GitHub的简介 Git是目前世界上最先进的分布式控制系统&#xff0c;它允许开发者跟踪和管理源代码的改动历史记录等&#xff0c;可以将你的代码恢复到某一个版本&#xff0c;支持多人协作开发。它的核心功能包括版本控制、分支管理、合并和冲突解决等&#xff0c;其操作…

根据Vue对比来深入学习React 上 函数组件 jsx 事件绑定 响应式数据 条件绑定 列表渲染 表单绑定

文章目录 React项目创建React核心库介绍React组件jsx编写jsx代码的本质jsx里面渲染不同内容 事件绑定事件绑定其他操作特别注意 响应式数据setState 的特性 条件渲染列表循环表单绑定总结 React项目创建 react官网提供了很多生产级的React框架 比如next.js&#xff0c;不过你还…

Python知识点:基于Python技术,如何使用OpenCV进行道路标志识别

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 使用OpenCV进行道路标志识别的Python技术详解 道路标志识别是智能交通系统中的应…

【动手学深度学习】6.4 多输入多输出通道

彩色图像具有标准的RBG通道来代表红绿蓝&#xff0c;但是到目前位置我们仅展示了单个输入和单个通道的简化例子。这使得我们可以将输入&#xff0c;卷积核和输出看作二维张量而当我们添加通道时&#xff0c;输入和隐藏表示都变成了三维张量。例如每个RGB输入图像都具有 3 h …

【云从】三、计算机网络基础

文章目录 1、网络2、网络通信2.1 IP地址2.2 子网掩码2.3 网关2.4 私有地址和公有地址2.5 NAT网络地址转换 3、网络架构及设备 1、网络 网络&#xff0c;即通过通信线路&#xff08;如光纤、网线&#xff09;和通信设备&#xff08;如路由器、光猫&#xff09;&#xff0c;将各…

对偶范数(Dual Norm)

文章目录 1. 对偶范数的定义2. 常见范数和对偶范数的关系3. 直观理解4. 示例5. 应用场景6.总结 对偶范数&#xff08;Dual Norm&#xff09; 是在泛函分析和凸优化中非常重要的概念。它用于衡量向量和线性函数之间的关系&#xff0c;尤其是在优化问题和范数的几何理解中非常有用…