I'm trying to upload a file via Secure FTP with org.apache.commons.net.ftp.FTPClient but I receive "java.net.NoRouteToHostException: No route to host" when connecting. The host is pingable and I can even read/write files with my FTP user via Filezilla SFTP connection to it. No firewall active in my router. What could be the problem?
My specs: Mint 17 x64, Java 7, router Netgear DGND4000 (maybe this help)
This is the code:
package it.eproject.pdf;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
public class Test {
public static void main(String[] args) {
System.out.println("Start upload file");
String sourceFile = "pdf/d00001.pdf";
String pdfName = "d00001.pdf";
String pdfDestFolder = "/pdf";
String ftpHost = "itsa.pingable.host";
String ftpUsername = "username";
String ftpPassword = "password";
FTPClient ftp = new FTPClient();
try {
ftp.setConnectTimeout(5000);
ftp.connect(ftpHost);
ftp.login(ftpUsername, ftpPassword);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
InputStream input = new FileInputStream(new File(pdfName));
ftp.storeFile(pdfDestFolder + pdfName, input);
ftp.logout();
ftp.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Done");
}
}
and this the exception:
java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:182)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:203)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:296)
at it.eproject.pdf.Test.main(Test.java:26)
I suppose Apache Commons libs does not provide SFTP APIs, so I switched to JCraft Jsch (http://www.jcraft.com/jsch/) and it works like a charm.