Mensagem "Cannot find symbol", mas não sei porque

4 respostas
FabricioPJ

Olá a todos. NO meu projeto, está aparecebdo essa mensagem, e pelo que ententi não está encontrando um método que foi declarado em uma outra classe. Vejam um trecho dos códigos:

Frame onde o erro está aparecendo

conexao conex = new conexao();
conex.conecta();

if(cbEscolhaDev.getSelectedItem().equals("LIVRO")){
    ERRO --- > conex.devolucaoExemplar(tfCodEmprestimo.getText()); <---ERRO
    JOptionPane.showMessageDialog(null, "Item devolvido com sucesso.", "AVISO", JOptionPane.INFORMATION_MESSAGE);
}
else 
    if(cbEscolhaDev.getSelectedItem().equals("TCC")){
        ERRO---> conex.realizarDevolucaoTcc(tfCodEmprestimo.getText()); <---ERRO
        JOptionPane.showMessageDialog(null, "Item devolvido com sucesso.", "AVISO", JOptionPane.INFORMATION_MESSAGE);
    }
    else
        if(cbEscolhaDev.getSelectedItem().equals("PERIODICO")){
           ERRO--> conex.realizarDevolucaoPeriodico(tfCodEmprestimo.getText()); <---ERRO
            JOptionPane.showMessageDialog(null, "Item devolvido com sucesso.", "AVISO", JOptionPane.INFORMATION_MESSAGE);
        }

E a classe que tem esses métodos declarados, que se chama conexao:

//================================Inicio do metodo devolucaoExemplar()=============================
//Esse metodo apaga um emprestimo salvo na tabela "emprestimoExemplar", caracterizando uma devolucao   
 public void devolucaoExemplar(String codEmprestimo){
        try{
            PreparedStatement st1 = con.prepareStatement("DELETE FROM \"FABRICIO\".\"emprestimoExemplar\" WHERE \"emprestimoExemplar\".\"CODEMPRESTIMOEXEMPLAR\" = ?");
            st1.setString(1, codEmprestimo);
            st1.executeUpdate();
            st1.close();
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Erro no metodo devolucaoExemplar(): " + e.getMessage());
        }
    }       
   
//=================================Fim do metodo realizarDevolucaoExemplar()=============================== 
   
   
   
   
   
//================================Inicio do metodo realizarDevolucaoPeriodico()=============================
//Esse metodo apaga um emprestimo salvo na tabela "emprestimoPeriodico", caracterizando uma devolucao   
   public void realizarDevolucaoPeriodico(String codEmprestimo){
        try{
            PreparedStatement st1 = con.prepareStatement("DELETE FROM \"FABRICIO\".\"emprestimoPeriodico\" WHERE \"emprestimoPeriodico\".\"CODEMPRESTIMOPERIODICO\" = ?");
            st1.setString(1, codEmprestimo);
            st1.executeUpdate();
            st1.close();
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Erro no metodo realizarDevolucaoPeriodico(): " + e.getMessage());
        }
    }       
   
//====================================Fim do metodo realizarDevolucaoPeriodico()==================================
   
   
   
   
//================================Inicio do metodo realizarDevolucaoTcc()=============================
//Esse metodo apaga um emprestimo salvo na tabela "emprestimoTcc", caracterizando uma devolucao   
   public void realizarDevolucaoTcc(String codEmprestimo){
        try{
            PreparedStatement st1 = con.prepareStatement("DELETE FROM \"FABRICIO\".\"emprestimoTcc\" WHERE \"emprestimoTcc\".\"CODEMPRESTIMOTCC\" = ?");
            st1.setString(1, codEmprestimo);
            st1.executeUpdate();
            st1.close();
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Erro no metodo realizarDevolucaoTcc(): " + e.getMessage());
        }
    }       
   
//====================================Fim do metodo realizarDevolucaoTcc()==================================

Passei cerca de uma hora lendo e relendo o código, mas não achei erro algum. A mensagem que fica aparecento é:

Cannot find symbol symbol: NOME_DO_METODO(java.lang.String) location: class Conexao.conexao

Sendo que todos os imports estão corretos, pois o frame está eum um pacote distinto da classe conexao.

Por favor, se alguém me apontar a solução, ficarei muito grato.

4 Respostas

L

sua classe se chama conexao ou Conexao…

repare como vc escreveu… pode ser isso…

R

Kra, uma das regras do Java, é que o nome das classes devem iniciar com letra maiúscula. Como o amigo luiz.argenton comentou, vc deve ter se confundido nessa parte de conexao / Conexao.

NOME_DO_METODO é o q???

poderia mostrar a classe Conexão?!?!

Flw

FabricioPJ

Vejam bem,Conexão com “C” maiusculo é o pacote onde a classe conexao, com “c” minusculo está.

No frame é que este erro está aparecendo. Eu instâncio a classe conexao,criando a instancia “conex”.Só que quando chamo os métodos “devolucaoExemplar”, “realizarDevolucaoTcc” e “realizarDevolucaoPeriodico” que estão na classe “conexao”,aparece a mensagem abaixo

Cannot find symbol
symbol: NOME_DO_METODO(java.lang.String)
location: class Conexao.conexao

Onde NOME_DO_METODO é um desses três métodos que mencionei acima.O que entendi é que o frame não está encontrando os métodos declarados na outra classe, a “conexao” sendo que estes já foram corretamente declarados.

Grato pela atenção dos colegas e continuo no aguardo de novas sugestões.

dreamspeaker

Verifique se sua classe conexao foi compilada corretamente. Esse erro está acontecendo provavelmente porque sua classe principal está instanciando uma versão anterior da sua classe conexao, sem os métodos.

Outra coisa, mude os nomes, utilize a convenção. O nome da classe deve começar com “C” maiusculo. E dê um outro nome para seu pacote, para evitar confusão.

Criado 9 de dezembro de 2007
Ultima resposta 10 de dez. de 2007
Respostas 4
Participantes 4