You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级sshd-sftp至2.10.0后spring-integration-sftp v6.1.2抛NoSuchMethodError

问题分析与解决方案

问题原因

这个NoSuchMethodError是由于Apache SSHD组件版本不一致导致的:你只升级了sshd-sftp到2.10.0,但Spring Integration SFTP 6.1.2默认依赖的sshd-core(ConnectFuture类所在的核心包)还是旧版本(比如2.9.2)。旧版本的ConnectFuture类并没有verify(java.time.Duration)这个方法,而Spring Integration的DefaultSftpSessionFactory在初始化会话时调用了该方法,因此触发运行时异常。

解决方案

方案1:统一所有SSHD组件版本

修改依赖配置,排除Spring Integration中引入的所有SSHD相关组件,然后显式引入2.10.0版本的sshd-core和sshd-sftp,确保版本完全一致:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-integration</artifactId>
   <version>3.1.2</version>   
</dependency>

<dependency>
   <groupId>org.springframework.integration</groupId>
   <artifactId>spring-integration-sftp</artifactId>
   <version>6.1.2</version>
   <exclusions>
       <!-- 排除所有旧版本SSHD依赖 -->
       <exclusion>
           <groupId>org.apache.sshd</groupId>
           <artifactId>sshd-core</artifactId> 
       </exclusion>
       <exclusion>
           <groupId>org.apache.sshd</groupId>
           <artifactId>sshd-sftp</artifactId> 
       </exclusion>
   </exclusions>
</dependency>

<!-- 显式引入统一版本的SSHD核心包 -->
<dependency> 
  <groupId>org.apache.sshd</groupId>
  <artifactId>sshd-core</artifactId>
  <version>2.10.0</version>
</dependency>

<!-- 引入目标版本的SFTP包 -->
<dependency> 
  <groupId>org.apache.sshd</groupId>
  <artifactId>sshd-sftp</artifactId>
  <version>2.10.0</version>
</dependency>

方案2:升级Spring Integration SFTP到兼容版本

如果方案1无效,说明Spring Integration SFTP 6.1.2与SSHD 2.10.0存在兼容性问题。可以尝试升级spring-integration-sftp到更高版本(比如6.1.3或6.2.x),这些版本通常会适配较新的SSHD版本。

额外步骤

修改依赖后,清理本地Maven/Gradle缓存,确保下载的是正确版本的依赖包,避免旧版本JAR残留导致的问题。

内容的提问来源于stack exchange,提问作者ChristineVl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:52:57