Pessoal é o seguinte…Eu estou Criando uma aplicação bem simples para ftp…Estou desenvolvendo o botão de deslogar ou desconectar do servidor ftp mas ele não desloga…
Eu estou usando os métodos disconnect() e logout() e ele não me retorna nada…ou eu não to fazendo direito…Estou utilizando a biblioteca commons-net-2.0…é a primeira vez que mexo com ftp entao eu posso estar viajando em algo
To postando o código nteiro embaixo
package ftp;
import java.io.IOException;
import java.net.SocketException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.net.ftp.FTPClient;
public class Ftp extends javax.swing.JFrame {
/** Creates new form Ftp */
public Ftp() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
painel1 = new javax.swing.JPanel();
enviar = new javax.swing.JButton();
listar = new javax.swing.JButton();
st = new javax.swing.JLabel();
status = new javax.swing.JLabel();
deslogar = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
l = new javax.swing.JLabel();
s = new javax.swing.JLabel();
e = new javax.swing.JLabel();
senha = new javax.swing.JTextField();
login = new javax.swing.JTextField();
endereco = new javax.swing.JTextField();
conecta = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
saida = new javax.swing.JTextArea();
menu = new javax.swing.JMenuBar();
arquivo = new javax.swing.JMenu();
desconectar = new javax.swing.JMenuItem();
sair = new javax.swing.JMenuItem();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
enviar.setText("Enviar arquivo");
listar.setText("Listar arquivos no destino");
listar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
listarActionPerformed(evt);
}
});
st.setText("Status:");
status.setText("Deslogado");
deslogar.setText("Deslogar");
deslogar.setEnabled(false);
deslogar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deslogarActionPerformed(evt);
}
});
javax.swing.GroupLayout painel1Layout = new javax.swing.GroupLayout(painel1);
painel1.setLayout(painel1Layout);
painel1Layout.setHorizontalGroup(
painel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(painel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(painel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(painel1Layout.createSequentialGroup()
.addComponent(st)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(status))
.addComponent(enviar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(listar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(deslogar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
painel1Layout.setVerticalGroup(
painel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(painel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(enviar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(listar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(deslogar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
.addGroup(painel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(st)
.addComponent(status)))
);
l.setText("Login");
s.setText("Senha");
e.setText("Endereço");
conecta.setText("Logar");
conecta.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
conectaActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(36, 36, 36)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(l)
.addComponent(s)
.addComponent(e))
.addGap(12, 12, 12)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(senha, javax.swing.GroupLayout.DEFAULT_SIZE, 178, Short.MAX_VALUE)
.addComponent(login, javax.swing.GroupLayout.DEFAULT_SIZE, 178, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(endereco, javax.swing.GroupLayout.DEFAULT_SIZE, 178, Short.MAX_VALUE))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(conecta)
.addGap(56, 56, 56)))
.addGap(18, 18, 18))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(l)
.addComponent(login, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(s)
.addComponent(senha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(e)
.addComponent(endereco, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(conecta)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
saida.setColumns(20);
saida.setRows(5);
jScrollPane1.setViewportView(saida);
menu.setName("FTP"); // NOI18N
arquivo.setText("Arquivo");
desconectar.setText("Desconectar");
desconectar.setEnabled(false);
desconectar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
desconectarActionPerformed(evt);
}
});
arquivo.add(desconectar);
sair.setText("Sair");
sair.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
sairActionPerformed(evt);
}
});
arquivo.add(sair);
menu.add(arquivo);
jMenu1.setText("Configurações");
jMenuItem1.setText("Configurar usuário");
jMenu1.add(jMenuItem1);
menu.add(jMenu1);
setJMenuBar(menu);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(14, 14, 14)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 472, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(painel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(painel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(35, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void sairActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void desconectarActionPerformed(java.awt.event.ActionEvent evt) {
try {
conn.logout();
} catch (IOException ex) {
saida.append("Erro IOException conn.logout()"+ex.getMessage());
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
}
try {
conn.disconnect();
} catch (IOException ex) {
saida.append("Erro IOException conn.disconnect()"+ex.getMessage());
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
}
desconectar.setEnabled(false);
deslogar.setEnabled(false);
status.setText("Deslogado");
login.setVisible(true);
senha.setVisible(true);
endereco.setVisible(true);
l.setVisible(true);
s.setVisible(true);
e.setVisible(true);
conecta.setVisible(true);
}
private void conectaActionPerformed(java.awt.event.ActionEvent evt) {
end=endereco.getText();
log=login.getText();
sen=senha.getText();
conn = new FTPClient();
try {
if(end.equals("")){
saida.append("Campo endereço ainda está em branco\n");
}else{
conn.connect(end);
}
} catch (SocketException ex) {
saida.append("Não foi possível conectar ao servidor Socket Exception"+ex.getMessage()+"\n");
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
saida.append("Não foi possível conectar ao servidor IO Exception"+ex.getMessage()+"\n");
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
}
try {
if(log.equals("")){
saida.append("Campo de login está em branco\n");
}else{
if(sen.equals("")){
saida.append("Campo senha está em branco\n");
}else{
conn.login(log, sen);
}
}
} catch (IOException ex) {
saida.append("Não foi possível logar no servidor IO Exception"+ex.getMessage()+"\n");
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
}
try {
arq = conn.listNames();
} catch (IOException ex) {
saida.append("Não foi possível listar os arquivos"+ex.getLocalizedMessage()+"\n");
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
}
status.setText("Logado");
login.setVisible(false);
senha.setVisible(false);
endereco.setVisible(false);
l.setVisible(false);
s.setVisible(false);
e.setVisible(false);
conecta.setVisible(false);
deslogar.setEnabled(true);
desconectar.setEnabled(true);
}
private void listarActionPerformed(java.awt.event.ActionEvent evt) {
saida.append("\n\nListando arquivos: \n");
for (String f : arq){
saida.append(""+f+"\n");
}
}
private void deslogarActionPerformed(java.awt.event.ActionEvent evt) {
try {
conn.logout();
} catch (IOException ex) {
saida.append("Erro IOException conn.logout()"+ex.getMessage());
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
}
try {
conn.disconnect();
} catch (IOException ex) {
saida.append("Erro IOException conn.disconnect()"+ex.getMessage());
Logger.getLogger(Ftp.class.getName()).log(Level.SEVERE, null, ex);
}
desconectar.setEnabled(false);
deslogar.setEnabled(false);
status.setText("Deslogado");
login.setVisible(true);
senha.setVisible(true);
endereco.setVisible(true);
l.setVisible(true);
s.setVisible(true);
e.setVisible(true);
conecta.setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ftp().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenu arquivo;
private javax.swing.JButton conecta;
private javax.swing.JMenuItem desconectar;
private javax.swing.JButton deslogar;
private javax.swing.JLabel e;
private javax.swing.JTextField endereco;
private javax.swing.JButton enviar;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel l;
private javax.swing.JButton listar;
private javax.swing.JTextField login;
private javax.swing.JMenuBar menu;
private javax.swing.JPanel painel1;
private javax.swing.JLabel s;
private javax.swing.JTextArea saida;
private javax.swing.JMenuItem sair;
private javax.swing.JTextField senha;
private javax.swing.JLabel st;
private javax.swing.JLabel status;
// End of variables declaration
FTPClient conn;
private String log;
private String sen;
private String end;
private String[] arq = null;
}
Caso eu consiga resolver o problema antes de alguem postar eu aviso e posto a minha solução