STS4中MVC项目中把log4j从1.x升级到2.x中遇到的两个问题

文章讲述了在将log4j从1.x升级到2.18.0时遇到的问题。问题一是由于关联依赖导致MavenDependencies中仍有旧版本log4j存在,解决方案是通过在pom.xml中使用exclusions来排除这些依赖。问题二是web.xml配置错误,需将Log4jConfigListener替换为Log4jServletContextListener,并更新配置参数为log4j2.xml。


项目原来的log4j版本是1.2.14,有漏洞需要升级到2.18.0.

问题一 升级后看Maven Dependencies中还是有依赖1.x的log4j

原因是有关联依赖, 项目中别的jar库有依赖低版本的log4j, 通过删去pom文件中的dependency并不能解决问题,我们还需要exclusions来进行排除依赖。

例如这样一个情况,工程中引入了A,A依赖B,但是B的版本过旧。

操作:鼠标右键Maven Dependencies中对应的老的log4j库,Maven–>Exclude Maven …
,重新build即可。
在这里插入图片描述

问题二 web.xml配置不对

报错:Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener

操作:把org.springframework.web.util.Log4jConfigListener 修改成org.apache.logging.log4j.web.Log4jServletContextListener;
web.xml配置如下:

  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j2.xml</param-value>
  </context-param>
  <listener>
    <listener-class>
			<!--  org.springframework.web.util.Log4jConfigListener -->
			org.apache.logging.log4j.web.Log4jServletContextListener
		</listener-class>
  </listener>
执行预编译任务... 正在加载 Ant 配置… 正在运行 Ant 任务… 正在运行 'before' 任务 正在检查源 正在复制资源… [sky-server] 正在复制资源… [sky-pojo] 正在复制资源… [sky-common] 正在解析 java… [sky-server] 正在检查依赖项… [sky-server] 依赖分析发现 0 个受影响的文件 编译模块 'sky-server' 时发生错误 javac 17.0.15 用于编译 java 源 已完成,正在保存缓存… 编译失败: 错误: 100;警告: 0 执行后编译任务... 正在加载 Ant 配置… 正在运行 Ant 任务… 正在同步输出目录… 2025/7/30 1:21 - 编译完成1秒646毫秒中 100 个错误 和 0 个警告 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:4:27 java: 程序包lombok.extern.slf4j不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:5:52 java: 程序包org.springframework.beans.factory.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:6:46 java: 程序包org.springframework.context.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:7:46 java: 程序包org.springframework.context.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:8:57 java: 程序包org.springframework.web.servlet.config.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:9:57 java: 程序包org.springframework.web.servlet.config.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:10:57 java: 程序包org.springframework.web.servlet.config.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:11:40 java: 程序包springfox.documentation.builders不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:12:40 java: 程序包springfox.documentation.builders不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:13:40 java: 程序包springfox.documentation.builders不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:14:39 java: 程序包springfox.documentation.service不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:15:35 java: 程序包springfox.documentation.spi不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:16:50 java: 程序包springfox.documentation.spring.web.plugins不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:23:42 java: 找不到符号 符号: 类 WebMvcConfigurationSupport D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:21:2 java: 找不到符号 符号: 类 Configuration D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:22:2 java: 找不到符号 符号: 类 Slf4j D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:33:36 java: 找不到符号 符号: 类 InterceptorRegistry 位置: 类 com.sky.config.WebMvcConfiguration D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:45:12 java: 找不到符号 符号: 类 Docket 位置: 类 com.sky.config.WebMvcConfiguration D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:64:40 java: 找不到符号 符号: 类 ResourceHandlerRegistry 位置: 类 com.sky.config.WebMvcConfiguration D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:25:6 java: 找不到符号 符号: 类 Autowired 位置: 类 com.sky.config.WebMvcConfiguration D:\software\sky-take-out\sky-server\src\main\java\com\sky\config\WebMvcConfiguration.java:44:6 java: 找不到符号 符号: 类 Bean 位置: 类 com.sky.config.WebMvcConfiguration D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:3:24 java: 程序包com.sky.constant不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:4:26 java: 程序包com.sky.properties不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:5:21 java: 程序包com.sky.utils不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:6:23 java: 程序包io.jsonwebtoken不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:7:27 java: 程序包lombok.extern.slf4j不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:8:52 java: 程序包org.springframework.beans.factory.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:9:38 java: 程序包org.springframework.stereotype不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:10:38 java: 程序包org.springframework.web.method不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:11:39 java: 程序包org.springframework.web.servlet不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:12:26 java: 程序包javax.servlet.http不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:13:26 java: 程序包javax.servlet.http不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:20:50 java: 找不到符号 符号: 类 HandlerInterceptor D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:18:2 java: 找不到符号 符号: 类 Component D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:19:2 java: 找不到符号 符号: 类 Slf4j D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:23:13 java: 找不到符号 符号: 类 JwtProperties 位置: 类 com.sky.interceptor.JwtTokenAdminInterceptor D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:34:30 java: 找不到符号 符号: 类 HttpServletRequest 位置: 类 com.sky.interceptor.JwtTokenAdminInterceptor D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:34:58 java: 找不到符号 符号: 类 HttpServletResponse 位置: 类 com.sky.interceptor.JwtTokenAdminInterceptor D:\software\sky-take-out\sky-server\src\main\java\com\sky\interceptor\JwtTokenAdminInterceptor.java:22:6 java: 找不到符号 符号: 类 Autowired 位置: 类 com.sky.interceptor.JwtTokenAdminInterceptor D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:3:24 java: 程序包com.sky.constant不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:4:19 java: 程序包com.sky.dto不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:5:22 java: 程序包com.sky.entity不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:6:26 java: 程序包com.sky.properties不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:7:22 java: 程序包com.sky.result不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:9:21 java: 程序包com.sky.utils不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:10:18 java: 程序包com.sky.vo不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:11:27 java: 程序包lombok.extern.slf4j不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:12:52 java: 程序包org.springframework.beans.factory.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:13:47 java: 程序包org.springframework.web.bind.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:14:47 java: 程序包org.springframework.web.bind.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:15:47 java: 程序包org.springframework.web.bind.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:16:47 java: 程序包org.springframework.web.bind.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:24:2 java: 找不到符号 符号: 类 RestController D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:25:2 java: 找不到符号 符号: 类 RequestMapping D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:26:2 java: 找不到符号 符号: 类 Slf4j D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:32:13 java: 找不到符号 符号: 类 JwtProperties 位置: 类 com.sky.controller.admin.EmployeeController D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:41:55 java: 找不到符号 符号: 类 EmployeeLoginDTO 位置: 类 com.sky.controller.admin.EmployeeController D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:41:12 java: 找不到符号 符号: 类 Result 位置: 类 com.sky.controller.admin.EmployeeController D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:41:19 java: 找不到符号 符号: 类 EmployeeLoginVO 位置: 类 com.sky.controller.admin.EmployeeController D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:70:12 java: 找不到符号 符号: 类 Result 位置: 类 com.sky.controller.admin.EmployeeController D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:29:6 java: 找不到符号 符号: 类 Autowired 位置: 类 com.sky.controller.admin.EmployeeController D:\software\sky-take-out\sky-server\src\main\java\com\sky\controller\admin\EmployeeController.java:31:6 java: 找不到符号 符号: 类 Autowired 位置: 类 com.sky.controller.admin.EmployeeController D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\EmployeeService.java:3:19 java: 程序包com.sky.dto不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\EmployeeService.java:4:22 java: 程序包com.sky.entity不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\EmployeeService.java:13:20 java: 找不到符号 符号: 类 EmployeeLoginDTO 位置: 接口 com.sky.service.EmployeeService D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\EmployeeService.java:13:5 java: 找不到符号 符号: 类 Employee 位置: 接口 com.sky.service.EmployeeService D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:3:25 java: 程序包com.sky.exception不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:4:22 java: 程序包com.sky.result不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:5:27 java: 程序包lombok.extern.slf4j不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:6:47 java: 程序包org.springframework.web.bind.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:7:47 java: 程序包org.springframework.web.bind.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:12:2 java: 找不到符号 符号: 类 RestControllerAdvice D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:13:2 java: 找不到符号 符号: 类 Slf4j D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:22:36 java: 找不到符号 符号: 类 BaseException 位置: 类 com.sky.handler.GlobalExceptionHandler D:\software\sky-take-out\sky-server\src\main\java\com\sky\handler\GlobalExceptionHandler.java:22:12 java: 找不到符号 符号: 类 Result 位置: 类 com.sky.handler.GlobalExceptionHandler D:\software\sky-take-out\sky-server\src\main\java\com\sky\mapper\EmployeeMapper.java:3:22 java: 程序包com.sky.entity不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\mapper\EmployeeMapper.java:4:37 java: 程序包org.apache.ibatis.annotations不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\mapper\EmployeeMapper.java:5:37 java: 程序包org.apache.ibatis.annotations不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\mapper\EmployeeMapper.java:7:2 java: 找不到符号 符号: 类 Mapper D:\software\sky-take-out\sky-server\src\main\java\com\sky\mapper\EmployeeMapper.java:16:5 java: 找不到符号 符号: 类 Employee 位置: 接口 com.sky.mapper.EmployeeMapper D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:3:24 java: 程序包com.sky.constant不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:4:24 java: 程序包com.sky.constant不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:5:19 java: 程序包com.sky.dto不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:6:22 java: 程序包com.sky.entity不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:7:25 java: 程序包com.sky.exception不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:8:25 java: 程序包com.sky.exception不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:9:25 java: 程序包com.sky.exception不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:12:52 java: 程序包org.springframework.beans.factory.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:13:38 java: 程序包org.springframework.stereotype不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:14:32 java: 程序包org.springframework.util不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:16:2 java: 找不到符号 符号: 类 Service D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:28:27 java: 找不到符号 符号: 类 EmployeeLoginDTO 位置: 类 com.sky.service.impl.EmployeeServiceImpl D:\software\sky-take-out\sky-server\src\main\java\com\sky\service\impl\EmployeeServiceImpl.java:28:12 java: 找不到符号 符号: 类 Employee 位置: 类 com.sky.service.impl.EmployeeServiceImpl D:\software\sky-take-out\sky-server\src\main\java\com\sky\SkyApplication.java:3:27 java: 程序包lombok.extern.slf4j不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\SkyApplication.java:4:32 java: 程序包org.springframework.boot不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\SkyApplication.java:5:46 java: 程序包org.springframework.boot.autoconfigure不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\SkyApplication.java:6:50 java: 程序包org.springframework.transaction.annotation不存在 D:\software\sky-take-out\sky-server\src\main\java\com\sky\SkyApplication.java:8:2 java: 找不到符号 符号: 类 SpringBootApplication D:\software\sky-take-out\sky-server\src\main\java\com\sky\SkyApplication.java:9:2 java: 找不到符号 符号: 类 EnableTransactionManagement D:\software\sky-take-out\sky-server\src\main\java\com\sky\SkyApplication.java:10:2 java: 找不到符号 符号: 类 Slf4j 这是我查询依赖树的输出结果: D:\software\sky-take-out>mvn dependency:tree [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] sky-take-out [pom] [INFO] sky-common [jar] [INFO] sky-pojo [jar] [INFO] sky-server [jar] [INFO] [INFO] ------------------------< com.sky:sky-take-out >------------------------ [INFO] Building sky-take-out 1.0-SNAPSHOT [1/4] [INFO] from pom.xml [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] --- dependency:3.3.0:tree (default-cli) @ sky-take-out --- [INFO] com.sky:sky-take-out:pom:1.0-SNAPSHOT [INFO] [INFO] -------------------------< com.sky:sky-common >------------------------- [INFO] Building sky-common 1.0-SNAPSHOT [2/4] [INFO] from sky-common\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- dependency:3.3.0:tree (default-cli) @ sky-common --- [INFO] com.sky:sky-common:jar:1.0-SNAPSHOT [INFO] +- org.projectlombok:lombok:jar:1.18.30:compile [INFO] +- com.alibaba:fastjson:jar:1.2.76:compile [INFO] +- commons-lang:commons-lang:jar:2.6:compile [INFO] +- org.springframework.boot:spring-boot-starter-json:jar:2.7.3:compile [INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.7.3:compile [INFO] | | +- org.springframework.boot:spring-boot:jar:2.7.3:compile [INFO] | | | \- org.springframework:spring-context:jar:5.3.22:compile [INFO] | | | +- org.springframework:spring-aop:jar:5.3.22:compile [INFO] | | | \- org.springframework:spring-expression:jar:5.3.22:compile [INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.7.3:compile [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.7.3:compile [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.11:compile [INFO] | | | | \- ch.qos.logback:logback-core:jar:1.2.11:compile [INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.2:compile [INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile [INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.36:compile [INFO] | | +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile [INFO] | | +- org.springframework:spring-core:jar:5.3.22:compile [INFO] | | | \- org.springframework:spring-jcl:jar:5.3.22:compile [INFO] | | \- org.yaml:snakeyaml:jar:1.30:compile [INFO] | +- org.springframework:spring-web:jar:5.3.22:compile [INFO] | | \- org.springframework:spring-beans:jar:5.3.22:compile [INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile [INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.3:compile [INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile [INFO] | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.3:compile [INFO] | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.3:compile [INFO] | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.3:compile [INFO] +- io.jsonwebtoken:jjwt:jar:0.9.1:compile [INFO] +- org.springframework.boot:spring-boot-configuration-processor:jar:2.7.3:compile [INFO] +- com.aliyun.oss:aliyun-sdk-oss:jar:3.10.2:compile [INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile [INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.4.15:compile [INFO] | | \- commons-codec:commons-codec:jar:1.15:compile [INFO] | +- org.jdom:jdom2:jar:2.0.6.1:compile [INFO] | +- org.codehaus.jettison:jettison:jar:1.1:compile [INFO] | | \- stax:stax-api:jar:1.0.1:compile [INFO] | +- com.aliyun:aliyun-java-sdk-core:jar:3.4.0:compile [INFO] | +- com.aliyun:aliyun-java-sdk-ram:jar:3.0.0:compile [INFO] | +- com.aliyun:aliyun-java-sdk-sts:jar:3.0.0:compile [INFO] | +- com.aliyun:aliyun-java-sdk-ecs:jar:4.2.0:compile [INFO] | \- com.aliyun:aliyun-java-sdk-kms:jar:2.7.0:compile [INFO] | \- com.google.code.gson:gson:jar:2.9.1:compile [INFO] +- javax.xml.bind:jaxb-api:jar:2.3.1:compile [INFO] | \- javax.activation:javax.activation-api:jar:1.2.0:compile [INFO] \- com.github.wechatpay-apiv3:wechatpay-apache-httpclient:jar:0.4.8:compile [INFO] +- org.apache.httpcomponents:httpmime:jar:4.5.13:runtime [INFO] \- org.slf4j:slf4j-api:jar:1.7.36:compile [INFO] [INFO] --------------------------< com.sky:sky-pojo >-------------------------- [INFO] Building sky-pojo 1.0-SNAPSHOT [3/4] [INFO] from sky-pojo\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- dependency:3.3.0:tree (default-cli) @ sky-pojo --- [INFO] com.sky:sky-pojo:jar:1.0-SNAPSHOT [INFO] +- org.projectlombok:lombok:jar:1.18.30:compile [INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.2:compile [INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.3:compile [INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile [INFO] \- com.github.xiaoymin:knife4j-spring-boot-starter:jar:3.0.2:compile [INFO] +- com.github.xiaoymin:knife4j-spring-boot-autoconfigure:jar:3.0.2:compile [INFO] | +- com.github.xiaoymin:knife4j-spring:jar:3.0.2:compile [INFO] | | +- com.github.xiaoymin:knife4j-annotations:jar:3.0.2:compile [INFO] | | | +- io.swagger:swagger-annotations:jar:1.5.22:compile [INFO] | | | \- io.swagger.core.v3:swagger-annotations:jar:2.1.2:compile [INFO] | | +- com.github.xiaoymin:knife4j-core:jar:3.0.2:compile [INFO] | | +- org.javassist:javassist:jar:3.25.0-GA:compile [INFO] | | +- io.springfox:springfox-swagger2:jar:3.0.0:compile [INFO] | | | +- io.springfox:springfox-spi:jar:3.0.0:compile [INFO] | | | +- io.springfox:springfox-schema:jar:3.0.0:compile [INFO] | | | +- io.springfox:springfox-swagger-common:jar:3.0.0:compile [INFO] | | | +- io.springfox:springfox-spring-web:jar:3.0.0:compile [INFO] | | | | \- io.github.classgraph:classgraph:jar:4.8.83:compile [INFO] | | | +- io.springfox:springfox-spring-webflux:jar:3.0.0:compile [INFO] | | | \- org.mapstruct:mapstruct:jar:1.3.1.Final:runtime [INFO] | | +- io.springfox:springfox-spring-webmvc:jar:3.0.0:compile [INFO] | | | \- io.springfox:springfox-core:jar:3.0.0:compile [INFO] | | | \- net.bytebuddy:byte-buddy:jar:1.12.13:compile [INFO] | | +- io.springfox:springfox-oas:jar:3.0.0:compile [INFO] | | | \- io.swagger.core.v3:swagger-models:jar:2.1.2:compile [INFO] | | +- io.springfox:springfox-bean-validators:jar:3.0.0:compile [INFO] | | +- io.swagger:swagger-models:jar:1.5.22:compile [INFO] | | \- io.swagger:swagger-core:jar:1.5.22:compile [INFO] | | +- org.apache.commons:commons-lang3:jar:3.12.0:compile [INFO] | | +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.13.3:compile [INFO] | | | \- org.yaml:snakeyaml:jar:1.30:compile [INFO] | | +- com.google.guava:guava:jar:27.0.1-android:compile [INFO] | | | +- com.google.guava:failureaccess:jar:1.0.1:compile [INFO] | | | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile [INFO] | | | +- com.google.code.findbugs:jsr305:jar:3.0.2:compile [INFO] | | | +- org.checkerframework:checker-compat-qual:jar:2.5.2:compile [INFO] | | | +- com.google.errorprone:error_prone_annotations:jar:2.2.0:compile [INFO] | | | +- com.google.j2objc:j2objc-annotations:jar:1.1:compile [INFO] | | | \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.17:compile [INFO] | | \- javax.validation:validation-api:jar:2.0.1.Final:compile [INFO] | \- io.springfox:springfox-boot-starter:jar:3.0.0:compile [INFO] | +- io.springfox:springfox-data-rest:jar:3.0.0:compile [INFO] | +- com.fasterxml:classmate:jar:1.5.1:compile [INFO] | +- org.slf4j:slf4j-api:jar:1.7.36:compile [INFO] | +- org.springframework.plugin:spring-plugin-core:jar:2.0.0.RELEASE:compile [INFO] | | +- org.springframework:spring-beans:jar:5.3.22:compile [INFO] | | | \- org.springframework:spring-core:jar:5.3.22:compile [INFO] | | | \- org.springframework:spring-jcl:jar:5.3.22:compile [INFO] | | +- org.springframework:spring-context:jar:5.3.22:compile [INFO] | | | \- org.springframework:spring-expression:jar:5.3.22:compile [INFO] | | \- org.springframework:spring-aop:jar:5.3.22:compile [INFO] | \- org.springframework.plugin:spring-plugin-metadata:jar:2.0.0.RELEASE:compile [INFO] \- com.github.xiaoymin:knife4j-spring-ui:jar:3.0.2:compile [INFO] [INFO] -------------------------< com.sky:sky-server >------------------------- [INFO] Building sky-server 1.0-SNAPSHOT [4/4] [INFO] from sky-server\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- dependency:3.3.0:tree (default-cli) @ sky-server --- [INFO] com.sky:sky-server:jar:1.0-SNAPSHOT [INFO] +- com.sky:sky-common:jar:1.0-SNAPSHOT:compile [INFO] | +- commons-lang:commons-lang:jar:2.6:compile [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.7.3:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.3:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.3:compile [INFO] | | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.3:compile [INFO] | +- io.jsonwebtoken:jjwt:jar:0.9.1:compile [INFO] | +- com.aliyun.oss:aliyun-sdk-oss:jar:3.10.2:compile [INFO] | | +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile [INFO] | | | \- org.apache.httpcomponents:httpcore:jar:4.4.15:compile [INFO] | | +- org.jdom:jdom2:jar:2.0.6.1:compile [INFO] | | +- org.codehaus.jettison:jettison:jar:1.1:compile [INFO] | | | \- stax:stax-api:jar:1.0.1:compile [INFO] | | +- com.aliyun:aliyun-java-sdk-core:jar:3.4.0:compile [INFO] | | +- com.aliyun:aliyun-java-sdk-ram:jar:3.0.0:compile [INFO] | | +- com.aliyun:aliyun-java-sdk-sts:jar:3.0.0:compile [INFO] | | +- com.aliyun:aliyun-java-sdk-ecs:jar:4.2.0:compile [INFO] | | \- com.aliyun:aliyun-java-sdk-kms:jar:2.7.0:compile [INFO] | | \- com.google.code.gson:gson:jar:2.9.1:compile [INFO] | \- com.github.wechatpay-apiv3:wechatpay-apache-httpclient:jar:0.4.8:compile [INFO] | \- org.apache.httpcomponents:httpmime:jar:4.5.13:runtime [INFO] +- com.sky:sky-pojo:jar:1.0-SNAPSHOT:compile [INFO] | \- com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile [INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.3:compile [INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile [INFO] +- org.springframework.boot:spring-boot-starter:jar:2.7.3:compile [INFO] | +- org.springframework.boot:spring-boot:jar:2.7.3:compile [INFO] | | \- org.springframework:spring-context:jar:5.3.22:compile [INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.7.3:compile [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:2.7.3:compile [INFO] | | +- ch.qos.logback:logback-classic:jar:1.2.11:compile [INFO] | | | \- ch.qos.logback:logback-core:jar:1.2.11:compile [INFO] | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.2:compile [INFO] | | | \- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile [INFO] | | \- org.slf4j:jul-to-slf4j:jar:1.7.36:compile [INFO] | +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile [INFO] | +- org.springframework:spring-core:jar:5.3.22:compile [INFO] | | \- org.springframework:spring-jcl:jar:5.3.22:compile [INFO] | \- org.yaml:snakeyaml:jar:1.30:compile [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.7.3:test [INFO] | +- org.springframework.boot:spring-boot-test:jar:2.7.3:test [INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.7.3:test [INFO] | +- com.jayway.jsonpath:json-path:jar:2.7.0:test [INFO] | | \- net.minidev:json-smart:jar:2.4.8:test [INFO] | | \- net.minidev:accessors-smart:jar:2.4.8:test [INFO] | | \- org.ow2.asm:asm:jar:9.1:test [INFO] | +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:test [INFO] | | \- jakarta.activation:jakarta.activation-api:jar:1.2.2:test [INFO] | +- org.assertj:assertj-core:jar:3.22.0:test [INFO] | +- org.hamcrest:hamcrest:jar:2.2:test [INFO] | +- org.junit.jupiter:junit-jupiter:jar:5.8.2:test [INFO] | | +- org.junit.jupiter:junit-jupiter-api:jar:5.8.2:test [INFO] | | | +- org.opentest4j:opentest4j:jar:1.2.0:test [INFO] | | | +- org.junit.platform:junit-platform-commons:jar:1.8.2:test [INFO] | | | \- org.apiguardian:apiguardian-api:jar:1.1.2:test [INFO] | | +- org.junit.jupiter:junit-jupiter-params:jar:5.8.2:test [INFO] | | \- org.junit.jupiter:junit-jupiter-engine:jar:5.8.2:test [INFO] | | \- org.junit.platform:junit-platform-engine:jar:1.8.2:test [INFO] | +- org.mockito:mockito-core:jar:4.5.1:test [INFO] | | +- net.bytebuddy:byte-buddy:jar:1.12.13:compile [INFO] | | +- net.bytebuddy:byte-buddy-agent:jar:1.12.13:test [INFO] | | \- org.objenesis:objenesis:jar:3.2:test [INFO] | +- org.mockito:mockito-junit-jupiter:jar:4.5.1:test [INFO] | +- org.skyscreamer:jsonassert:jar:1.5.1:test [INFO] | | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test [INFO] | +- org.springframework:spring-test:jar:5.3.22:test [INFO] | \- org.xmlunit:xmlunit-core:jar:2.9.0:test [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.7.3:compile [INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.7.3:compile [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.65:compile [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.65:compile [INFO] | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.65:compile [INFO] | +- org.springframework:spring-web:jar:5.3.22:compile [INFO] | | \- org.springframework:spring-beans:jar:5.3.22:compile [INFO] | \- org.springframework:spring-webmvc:jar:5.3.22:compile [INFO] | +- org.springframework:spring-aop:jar:5.3.22:compile [INFO] | \- org.springframework:spring-expression:jar:5.3.22:compile [INFO] +- mysql:mysql-connector-java:jar:8.0.30:runtime [INFO] +- org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:2.2.0:compile [INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:2.7.3:compile [INFO] | | +- com.zaxxer:HikariCP:jar:4.0.3:compile [INFO] | | \- org.springframework:spring-jdbc:jar:5.3.22:compile [INFO] | +- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:2.2.0:compile [INFO] | +- org.mybatis:mybatis:jar:3.5.7:compile [INFO] | \- org.mybatis:mybatis-spring:jar:2.0.6:compile [INFO] +- org.projectlombok:lombok:jar:1.18.30:compile [INFO] +- com.alibaba:fastjson:jar:1.2.76:compile [INFO] +- com.alibaba:druid-spring-boot-starter:jar:1.2.1:compile [INFO] | +- com.alibaba:druid:jar:1.2.1:compile [INFO] | \- org.slf4j:slf4j-api:jar:1.7.36:compile [INFO] +- com.github.pagehelper:pagehelper-spring-boot-starter:jar:1.3.0:compile [INFO] | +- com.github.pagehelper:pagehelper-spring-boot-autoconfigure:jar:1.3.0:compile [INFO] | \- com.github.pagehelper:pagehelper:jar:5.2.0:compile [INFO] | \- com.github.jsqlparser:jsqlparser:jar:3.2:compile [INFO] +- org.aspectj:aspectjrt:jar:1.9.4:compile [INFO] +- org.aspectj:aspectjweaver:jar:1.9.4:compile [INFO] +- com.github.xiaoymin:knife4j-spring-boot-starter:jar:3.0.2:compile [INFO] | +- com.github.xiaoymin:knife4j-spring-boot-autoconfigure:jar:3.0.2:compile [INFO] | | +- com.github.xiaoymin:knife4j-spring:jar:3.0.2:compile [INFO] | | | +- com.github.xiaoymin:knife4j-annotations:jar:3.0.2:compile [INFO] | | | | +- io.swagger:swagger-annotations:jar:1.5.22:compile [INFO] | | | | \- io.swagger.core.v3:swagger-annotations:jar:2.1.2:compile [INFO] | | | +- com.github.xiaoymin:knife4j-core:jar:3.0.2:compile [INFO] | | | +- org.javassist:javassist:jar:3.25.0-GA:compile [INFO] | | | +- io.springfox:springfox-swagger2:jar:3.0.0:compile [INFO] | | | | +- io.springfox:springfox-spi:jar:3.0.0:compile [INFO] | | | | +- io.springfox:springfox-schema:jar:3.0.0:compile [INFO] | | | | +- io.springfox:springfox-swagger-common:jar:3.0.0:compile [INFO] | | | | +- io.springfox:springfox-spring-web:jar:3.0.0:compile [INFO] | | | | | \- io.github.classgraph:classgraph:jar:4.8.83:compile [INFO] | | | | +- io.springfox:springfox-spring-webflux:jar:3.0.0:compile [INFO] | | | | \- org.mapstruct:mapstruct:jar:1.3.1.Final:runtime [INFO] | | | +- io.springfox:springfox-spring-webmvc:jar:3.0.0:compile [INFO] | | | | \- io.springfox:springfox-core:jar:3.0.0:compile [INFO] | | | +- io.springfox:springfox-oas:jar:3.0.0:compile [INFO] | | | | \- io.swagger.core.v3:swagger-models:jar:2.1.2:compile [INFO] | | | +- io.springfox:springfox-bean-validators:jar:3.0.0:compile [INFO] | | | +- io.swagger:swagger-models:jar:1.5.22:compile [INFO] | | | \- io.swagger:swagger-core:jar:1.5.22:compile [INFO] | | | +- org.apache.commons:commons-lang3:jar:3.12.0:compile [INFO] | | | +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.13.3:compile [INFO] | | | +- com.google.guava:guava:jar:27.0.1-android:compile [INFO] | | | | +- com.google.guava:failureaccess:jar:1.0.1:compile [INFO] | | | | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile [INFO] | | | | +- com.google.code.findbugs:jsr305:jar:3.0.2:compile [INFO] | | | | +- org.checkerframework:checker-compat-qual:jar:2.5.2:compile [INFO] | | | | +- com.google.errorprone:error_prone_annotations:jar:2.2.0:compile [INFO] | | | | +- com.google.j2objc:j2objc-annotations:jar:1.1:compile [INFO] | | | | \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.17:compile [INFO] | | | \- javax.validation:validation-api:jar:2.0.1.Final:compile [INFO] | | \- io.springfox:springfox-boot-starter:jar:3.0.0:compile [INFO] | | +- io.springfox:springfox-data-rest:jar:3.0.0:compile [INFO] | | +- com.fasterxml:classmate:jar:1.5.1:compile [INFO] | | +- org.springframework.plugin:spring-plugin-core:jar:2.0.0.RELEASE:compile [INFO] | | \- org.springframework.plugin:spring-plugin-metadata:jar:2.0.0.RELEASE:compile [INFO] | \- com.github.xiaoymin:knife4j-spring-ui:jar:3.0.2:compile [INFO] +- org.springframework.boot:spring-boot-starter-data-redis:jar:2.7.3:compile [INFO] | +- org.springframework.data:spring-data-redis:jar:2.7.2:compile [INFO] | | +- org.springframework.data:spring-data-keyvalue:jar:2.7.2:compile [INFO] | | | \- org.springframework.data:spring-data-commons:jar:2.7.2:compile [INFO] | | +- org.springframework:spring-tx:jar:5.3.22:compile [INFO] | | \- org.springframework:spring-oxm:jar:5.3.22:compile [INFO] | \- io.lettuce:lettuce-core:jar:6.1.9.RELEASE:compile [INFO] | +- io.netty:netty-common:jar:4.1.79.Final:compile [INFO] | +- io.netty:netty-handler:jar:4.1.79.Final:compile [INFO] | | +- io.netty:netty-resolver:jar:4.1.79.Final:compile [INFO] | | +- io.netty:netty-buffer:jar:4.1.79.Final:compile [INFO] | | +- io.netty:netty-transport-native-unix-common:jar:4.1.79.Final:compile [INFO] | | \- io.netty:netty-codec:jar:4.1.79.Final:compile [INFO] | +- io.netty:netty-transport:jar:4.1.79.Final:compile [INFO] | \- io.projectreactor:reactor-core:jar:3.4.22:compile [INFO] | \- org.reactivestreams:reactive-streams:jar:1.0.4:compile [INFO] +- org.springframework.boot:spring-boot-starter-cache:jar:2.7.3:compile [INFO] | \- org.springframework:spring-context-support:jar:5.3.22:compile [INFO] +- org.springframework.boot:spring-boot-starter-websocket:jar:2.7.3:compile [INFO] | +- org.springframework:spring-messaging:jar:5.3.22:compile [INFO] | \- org.springframework:spring-websocket:jar:5.3.22:compile [INFO] +- javax.xml.bind:jaxb-api:jar:2.3.1:compile [INFO] | \- javax.activation:javax.activation-api:jar:1.2.0:compile [INFO] +- org.apache.poi:poi:jar:3.16:compile [INFO] | +- commons-codec:commons-codec:jar:1.15:compile [INFO] | \- org.apache.commons:commons-collections4:jar:4.1:compile [INFO] \- org.apache.poi:poi-ooxml:jar:3.16:compile [INFO] +- org.apache.poi:poi-ooxml-schemas:jar:3.16:compile [INFO] | \- org.apache.xmlbeans:xmlbeans:jar:2.6.0:compile [INFO] \- com.github.virtuald:curvesapi:jar:1.04:compile [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for sky-take-out 1.0-SNAPSHOT: [INFO] [INFO] sky-take-out ....................................... SUCCESS [ 0.638 s] [INFO] sky-common ......................................... SUCCESS [ 0.123 s] [INFO] sky-pojo ........................................... SUCCESS [ 0.135 s] [INFO] sky-server ......................................... SUCCESS [ 0.248 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.458 s [INFO] Finished at: 2025-07-30T01:12:03+08:00 [INFO] ------------------------------------------------------------------------
最新发布
07-31
<think>好的,用户现在想了解如何从MinIO Java SDK 4.x迁移到8.x版本。我需要根据之前的回答和提供的引用内容来生成一个详细的迁移指南。首先,回顾之前的回答,我已经提到过版本跨度大,API变化显著,所以迁移步骤需要涵盖依赖更新、代码重构、配置调整、测试验证等环节。 用户提供的引用内容里提到了Java版本管理工具如jabba、jenv、SDKMan,可能用户的环境中有多版本Java的需求,因此在迁移过程中可能需要确保使用兼容的Java版本。引用中的工具如Adopt Open JDK、Graal、Zulu等JDK实现,可能用户的项目中使用了特定的JDK,需要确认MinIO SDK 8.x的Java版本要求,比如是否要求Java 8或更高版本。 另外,引用中提到的构建和部署工具如Maven、Gradle,以及部署工具如Capsule、packr,可能用户在项目中使用了这些工具,需要指导如何更新依赖配置,比如Maven的pom.xml文件。同时,考虑到MinIO SDK 8.x的依赖坐标可能发生了变化,需要正确替换。 接下来,我需要整理迁移的主要步骤。首先,更新依赖管理,将旧版的4.x依赖替换为8.x的最新版本,比如8.5.10。然后,处理包名和类名的变更,例如旧版的`io.minio.MinioClient`变为`io.minio.MinioAsyncClient`,同步客户端可能需要使用`MinioClient`。同时,API的调用方式也有变化,比如上传对象的方法从`putObject`变为接受`PutObjectArgs`参数对象。 另外,认证机制的改变是关键点,旧版可能使用access key和secret key直接初始化客户端,而新版需要更安全的认证方式,比如通过环境变量或更安全的存储方式。可能涉及到STS安全令牌的使用,需要调整客户端初始化的代码。 还需要注意异常处理的变更,旧版可能抛出不同的异常,而新版可能使用了新的异常类,需要更新catch块中的异常类型。此外,配置项如区域设置、HTTPS启用等也可能有变化,需要检查并更新配置参数。 测试部分,建议用户逐步验证核心功能,如桶操作、文件上传下载等,使用单元测试或集成测试来确保兼容性。同时,参考官方迁移文档和示例代码,确保没有遗漏重要的变更点。 用户可能遇到的问题包括依赖冲突、API不兼容、认证错误等,需要提醒他们在迁移过程中注意这些方面,并提供解决方法,比如检查依赖树、查阅官方文档、启用详细日志等。 最后,生成相关问题,帮助用户进一步解决可能遇到的挑战,比如处理依赖冲突、认证失败、性能优化等。</think>根据MinIO官方迁移指南和Java SDK更新日志,以下是从Java SDK 4.x迁移到8.x的完整技术方案(关键变更已用$\textcolor{red}{\text{红色标记}}$): --- ### 一、依赖管理升级 1. **Maven配置变更** ```xml <!-- 旧版4.x配置 --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>4.0.5</version> </dependency> <!-- $\textcolor{red}{\text{新版8.x配置}}$ --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.5.10</version> <!-- 2024年最新稳定版 --> </dependency> ``` 2. **Gradle配置变更** ```gradle // 旧版 implementation 'io.minio:minio:4.0.5' // $\textcolor{red}{\text{新版}}$ implementation 'io.minio:minio:8.5.10' ``` --- ### 二、核心API迁移 #### 1. 客户端初始化 ```java /* 4.x旧版写法 */ MinioClient client = new MinioClient("https://play.min.io", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); client.setTimeout(60_000, 60_000, 60_000); /* $\textcolor{red}{\text{8.x新版写法}}$ */ MinioClient client = MinioClient.builder() .endpoint("https://play.min.io") .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG") .connectTimeout(Duration.ofSeconds(60)) .writeTimeout(Duration.ofSeconds(60)) .readTimeout(Duration.ofSeconds(60)) .build(); ``` #### 2. 文件上传接口 ```java // 4.x旧版 client.putObject("my-bucket", "object-name", "file-path", "application/octet-stream"); // $\textcolor{red}{\text{8.x新版}}$ client.putObject( PutObjectArgs.builder() .bucket("my-bucket") .object("object-name") .stream(Files.newInputStream(Paths.get("file-path")), -1, 10485760) .contentType("application/octet-stream") .build() ); ``` --- ### 三、关键变更清单 | 模块 | 4.x API | 8.x API | |---------------------|----------------------------------|----------------------------------------| | **客户端构建** | `new MinioClient()` | `MinioClient.builder()`[^1] | | **对象上传** | `putObject(String...)` | `putObject(PutObjectArgs)` | | **分片上传** | `putObject(String, String, File)`| `uploadObject()`配合`UploadObjectArgs` | | **异常处理** | `MinioException` | `ErrorResponseException`[^3] | | **HTTP配置** | `setTimeout()` | `.connectTimeout()`链式调用 | --- ### 四、迁移验证步骤 1. **环境检查** ```bash # 确认Java版本≥8(推荐使用SDKMan管理版本) sdk use java 17.0.10-zulu # 检查依赖树 mvn dependency:tree | grep minio ``` 2. **核心功能测试** ```java // 桶存在性检查 boolean exists = client.bucketExists(BucketExistsArgs.builder() .bucket("test-bucket") .build()); // 分片下载测试 try (InputStream stream = client.getObject( GetObjectArgs.builder() .bucket("test-bucket") .object("large-file.zip") .build())) { Files.copy(stream, Paths.get("/tmp/large-file.zip")); } ``` --- ### 五、常见问题解决方案 **问题1:NoSuchMethodError** $\textcolor{red}{\text{原因}}$:旧版方法残留 $\textcolor{blue}{\text{修复}}$:运行`mvn clean install -U`强制更新依赖 **问题2:SignatureDoesNotMatch** $\textcolor{red}{\text{原因}}$:区域配置缺失 $\textcolor{blue}{\text{修复}}$: ```java MinioClient.builder() .region("us-east-1") // 新增区域配置 .endpoint("...") ... ``` **问题3:Deprecated API警告** $\textcolor{red}{\text{处理}}$:启用编译器提示 ```xml <!-- Maven配置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgs> <arg>-Xlint:deprecation</arg> </compilerArgs> </configuration> </plugin> ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值