Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Commons VFS and Java.net.URL - Adding support for "sftp://" protocol

We're trying to use Apache Commons VFS to access something over SFTP. It claims to support SFTP, however we're getting a MalformedURLException when it starts. Digging around I see that apache vfs is using java.net.URL. However the documentation tells me that it doesn't actually support sftp:// URLs.

Protocol handlers for the following protocols are guaranteed to exist on the search path :-

    http, https, ftp, file, and jar

Protocol handlers for additional protocols may also be available.

I'm using java 1.6.0 on Linux. How can I prevent java.net.URL from throwing a wobbly when it sees a sftp:// URL? I need to keep using the Apache commons VFS library, which uses java.net.URL.

like image 371
Amandasaurus Avatar asked Sep 24 '09 13:09

Amandasaurus


2 Answers

See the list of dependencies that commons-vfs requires for sftp to work. Once JSch is in the classpath, your exception no longer happen. Have a look at Apache's Wiki for examples of connecting via sftp.

like image 200
Steve K Avatar answered Sep 18 '22 05:09

Steve K


I've never used VFS before, but it looks like you'd need to (at least) register an SFTP FileProvider. It looks like it requires something like:

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

There is probably a way to do the same thing through configuration file syntax.

like image 28
erickson Avatar answered Sep 19 '22 05:09

erickson