记录一次使用hutool工具进行SFTP上传的坑

目录

现象:

原java代码

pom配置(坑就在此)

 ###解决方案


现象:

java.lang.NullPointerException: null
        at cn.hutool.core.lang.SimpleCache.get(SimpleCache.java:99)
        at cn.hutool.extra.ssh.JschSessionPool.getSession(JschSessionPool.java:45)
        at cn.hutool.extra.ssh.JschUtil.getSession(JschUtil.java:55)
        at cn.hutool.extra.ssh.Sftp.init(Sftp.java:127)
        at cn.hutool.extra.ssh.Sftp.init(Sftp.java:146)
        at cn.hutool.extra.ssh.Sftp.<init>(Sftp.java:81)
        at cn.hutool.extra.ssh.Sftp.<init>(Sftp.java:70)
        at cn.hutool.extra.ssh.Sftp.<init>(Sftp.java:56)
        at cn.****.admin.util.FtpUpdateUtil.uploadFile(FtpUpdateUtil.java:54)

原java代码

Sftp sftp= JschUtil.createSftp("172.0.0.1", 22, "root", "123456");
//进入远程目录
sftp.cd("/opt/upload");
//上传本地文件
sftp.put("e:/test.jpg", "/opt/upload");
//下载远程文件
sftp.get("/opt/upload/test.jpg", "e:/test2.jpg");

//关闭连接
sftp.close();

pom配置(坑就在此)

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.1</version>
        </dependency>
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.54</version>
        </dependency>

 ###解决方案

这个问题完全就是hutool与jsch版本不兼容导致,只需要修改版本即可完美解决(如下)

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.20</version>
        </dependency>
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

Java使用Hutool SFTP可以实现与远程服务器进行文件传输的功能。Hutool是一个Java工具库,提供了丰富的功能类库,其中包括了对SFTP操作的支持。 在使用Hutool SFTP时,首先需要导入相关的依赖。可以将以下依赖添加到项目的pom.xml文件中: ```xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.10</version> </dependency> ``` 接下来,需要创建一个Sftp类的实例对象,并通过`setHost`、`setPort`、`setUser`和`setPass`方法设置连接远程服务器所需的主机名、端口、用户名和密码。然后,使用`connect`方法建立与服务器的连接。 建立连接后,就可以使用Hutool SFTP提供的方法进行文件传输了。例如,可以使用`upload`方法将本地文件上传到远程服务器,方法签名如下: ```java public void upload(String src, String dest) ``` 其中,`src`参数表示本地文件的路径,`dest`参数表示远程服务器上保存文件的路径。 另外,还可以使用`download`方法从远程服务器下载文件到本地。方法签名如下: ```java public void download(String src, String dest) ``` 其中,`src`参数表示远程服务器上文件的路径,`dest`参数表示下载文件保存的本地路径。 除了上传和下载文件,Hutool SFTP还支持其他一些操作,如创建目录、修改文件权限等。 使用Hutool SFTP进行文件传输时,还需要注意及时关闭连接,以释放资源。可以使用`close`方法关闭与服务器的连接。 总之,Hutool SFTP提供了简单方便的API,可以轻松地实现Java与远程服务器之间的文件传输功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值