Este es un error un poco chorra, pero de paso lo podemos usar como excusa para poner un ejemplo de como conectarse a un SFTP a través de Java.
Para empezar pondremos el ejemplo de como podemos conectarnos a un SFTP a través de Java. Para ello haremos uso de la librería JSch. Hay otras librerías como 'commons-vsf2' de apache, pero el código con ellas no estan intuitivo y además por debajo acaban usando JSch
JSch jsch = new JSch(); Session session = jsch.getSession(username, hostname, port); Properties config = new Properties(); session.setConfig(config); //Si quieres conectar con usuario/contraseña session.setPassword(password); //Si quieres conectar con clave ssh, comenta la anterior y descomenta esta //jsch.addIdentity(identity); //config.put("StrictHostKeyChecking", "no"); //... Conectar con el SFTP session.connect(); ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp"); sftpChannel.connect(); //... Subir un fichero sftpChannel.get(sourcePath, destinationPath) //... Bajar un fichero sftpChannel.put(sourcePath, destinationPath);
Ahora vamos con el error, que era el siguiente:
2: No such file at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873) at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:594) at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:475) at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:365)
El error es mas o menos evidente en cuanto a su descripción, y es básicamente que no encuentra el fichero. El asunto es.. ¿Porque no lo encuentra?. Puede ser por alguno de los siguientes casos:
- Si la ruta del FTP empieza por '/' indica que es una ruta absoluta
- Si la ruta del FTP no comienza por '/' indica que es una ruta relativa en base a la carpeta del usuario que se conecta a dicho FTP
- Puede ser que directamente la carpeta no exista en el FTP (como fue mi caso).
No hay comentarios:
Publicar un comentario