Commons VFS 和 Java.net.URL - 添加对“sftp://”协议的支持

2022-09-03 04:47:24

我们正试图使用Apache Commons VFS通过SFTP访问某些内容。它声称支持SFTP,但是当它启动时,我们得到了一个格式错误的URLException。四处挖掘,我看到apache vfs正在使用java.net.URL。但是,文档告诉我它实际上并不支持URL。sftp://

以下协议的协议处理程序保证存在于搜索路径上:-

    http, https, ftp, file, and jar

其他协议的协议处理程序也可能可用。

我在Linux上使用java 1.6.0。如何防止在看到URL时抛出摇摇晃晃的URL?我需要继续使用Apache commons VFS库,它使用.java.net.URLsftp://java.net.URL


答案 1

请参阅 commons-vfs 需要 sftp 工作的依赖项列表。一旦 JSch 位于类路径中,您的异常就不再发生。看看Apache的Wiki,了解通过sftp连接的例子。


答案 2

我以前从未使用过VFS,但看起来你需要(至少)注册一个SFTP FileProvider看起来它需要这样的东西:

DefaultFileSystemManager fsm = ... /* Create and configure your FSM. */
fsm.addProvider("sftp", new SftpFileProvider());

可能有一种方法可以通过配置文件语法执行相同的操作。