Search code examples
javalinuxurlsftpapache-commons-vfs

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.


Solution

  • 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.