JHipster旧项目JDK8升JDK11及Spring Boot版本不生效问题求助
JHipster老旧项目升级至JDK11的结构化解决方案
一、先搞定Spring Boot版本不生效的问题
- 彻底清理依赖缓存
- 执行Maven命令强制更新依赖:
mvn clean install -U,Gradle项目用gradle clean build --refresh-dependencies - 手动删除本地Maven仓库中Spring Boot 2.0.4的残留包,路径一般是
~/.m2/repository/org/springframework/boot/spring-boot-2.0.4.RELEASE及相关子目录
- 执行Maven命令强制更新依赖:
- 检查依赖管理优先级
- 确保
pom.xml的dependencyManagement中,jhipster-dependencies3.0.1的导入声明在最前面,Spring Boot的依赖不要硬写版本号,让JHipster的依赖管理自动控制版本:
比如Spring Boot Starter依赖要写成这样,不要加version:<dependencyManagement> <dependencies> <dependency> <groupId>io.github.jhipster</groupId> <artifactId>jhipster-dependencies</artifactId> <version>3.0.1</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 其他依赖管理声明 --> </dependencies> </dependencyManagement><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
- 确保
- 清理IDE缓存
- IntelliJ:点击
File→Invalidate Caches...,勾选Clear file system cache and local history后重启IDE - Eclipse:点击
Project→Clean...清理项目,再右键项目选Maven→Update Project
- IntelliJ:点击
二、解决Liquibase的snakeyaml依赖报错
- 升级Liquibase版本
旧版本Liquibase的manifest存在引用缺失问题,直接升级到兼容JHipster 3.0.1的版本,比如3.8.9:<dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>3.8.9</version> </dependency> - 手动管理snakeyaml依赖
如果升级Liquibase后还有问题,就排除它自带的snakeyaml,手动添加兼容版本:<dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <exclusions> <exclusion> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.26</version> </dependency>
三、适配JDK11环境
- 修改编译配置
Maven项目更新maven-compiler-plugin配置:
Gradle项目修改<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> <encoding>UTF-8</encoding> </configuration> </plugin>build.gradle:sourceCompatibility = 11 targetCompatibility = 11 - 更新Firebird JDBC驱动
Firebird 3.0.9需要用支持JDK11的Jaybird驱动版本,比如4.0.9.java8(兼容JDK8-17):<dependency> <groupId>org.firebirdsql.jdbc</groupId> <artifactId>jaybird</artifactId> <version>4.0.9.java8</version> </dependency> - 替换废弃API
扫描代码中JDK11已废弃/移除的API,比如sun.misc.BASE64Encoder换成java.util.Base64,用IDE的代码检查工具(比如IntelliJ的Inspections)快速定位修改
四、验证升级效果
- 启动项目,查看日志确认Spring Boot版本为2.1.4.RELEASE、JDK版本为11
- 测试数据库连接、核心接口、业务流程是否正常
- 运行所有单元测试和集成测试,确保代码兼容性没问题
内容的提问来源于stack exchange,提问作者user1517193
相关产品推荐
相关产品推荐

