Tenho uma aplicação em Java Swing que trava toda vez que chamo um método para conectar no servidor de FTP. Isolei o código e descobri que ele está travando na linha ftp.connect. Outra curiosidade é que chamando o método sem utilizar o Swing, funciona perfeito. Segue o código com o método TransEXC():
import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Transfer {
FTPClient ftp = new FTPClient();
String ftpurl="localhost";
int porta=21;
JTextField campouser = EscalabilidadeAIPView.jUser;
String user = campouser.getText();
JPasswordField camposenha = EscalabilidadeAIPView.jPass;
String pass = camposenha.getText();
public void TransEXC() throws IOException, SocketException {
try {
ftp.connect(ftpurl,porta);
ftp.login( user, pass );
int status = ftp.getReplyCode();
System.out.println(status);
if (status == 530) {
JOptionPane.showMessageDialog(null, "Login incorreto\n"
+ "Abortando processo EXCEÇÃO!\n",
"ERRO", JOptionPane.ERROR_MESSAGE);
System.out.println(status);
return;
}
} catch (Exception e) {
String ERROR = e.toString();
if ("java.net.ConnectException: Connection timed out: connect".
equals(ERROR)) {
JOptionPane.showMessageDialog(null, "Tempo esgotado:\n" +
ftpurl, "ERRO", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Host desconhecido:\n" + ftpurl,
"ERRO", JOptionPane.ERROR_MESSAGE);
}
e.printStackTrace();
System.exit(1);
}
}