Como resolver: non-static variable

9 respostas
V

Bom, hoje comecei a implementar uma Session na aplicação só que apareceu esse erro:

non-static variable ctUsuario cannot be referenced from a static context
non-static variable ctSenha cannot be referenced from a static context

Nessa parte aqui:

ResultSet rs = stmt.executeQuery("SELECT * FROM usuario WHERE user = '" + ctUsuario.getText() +"' AND senha = md5('"+ ctSenha.getText() +"')");

Procurei algo parecido e não consegui resolver.

[]'s

9 Respostas

S

Cara vc deve estar querendo um usar uma variável não estática dentro de um método estático.

M

suas duas variaveis são declaradas normais e o metodo que vc esta usando eh static.

V

E como eu posso mudar o meu TextField para static ?

[]'s

E

Vander Carlos:
E como eu posso mudar o meu TextField para static ?

[]'s

A pergunta que você fez está errada. O correto é perguntar “o que devo fazer para tirar os “statics” do meu código”?

De modo geral, exceto pelo “main” e pelos “public static final ___ CONSTANTE = ____”, não é bom ficar abusando de statics.

V

Tem como eu deixer essa minha Session sem o static ?

public static class Sessao{  
  
   private static Sessao instance = null;  
   
   private Usuario usuario;  
  
   private Sessao(){  
   }  
  
   public void setUsuario(Usuario usuario){  
      this.usuario = usuario;  
   }  
   public Usuario getUsuario(){  
       return usuario;  
   }  
   public static Sessao getInstance(){  
         if(instance == null){  
               instance = new Sessao();  
         }  
        return instance;  
   }
Sessao sessao = Sessao.getInstance();  
sessao.setUsuario(usuario);

Quando eu tiro todos os métodos estáticos e instancio o método aparece isso:

non-static method getInstance() cannot be referenced from a static context
E

primeiro eu recomendo a você estudar o que é um método/propriedade estática.

E para seu código funcionar, você tira os static, exceto o do getInstance, esse deve continuar sendo static. E na hora de você executar o método getInstance a partir de um ambiente não estático, você usa “session = Session.getInstance();”

V

Dessa forma?

public class Sessao{  
   private static Sessao instance = null;  
   private Usuario usuario;  
  
   private Sessao(){  
   }  
  
   public void setUsuario(Usuario usuario){  
      this.usuario = usuario;  
   }  
  
   public Usuario getUsuario(){  
       return usuario;  
   }  
   public static Sessao getInstance(){  
         if(instance == null){  
               instance = new Sessao();  
         }  
        return instance;  
   }  
}
E

Existe apenas e tão somente uma sessão no seu sistema inteiro (que é a sua intenção, usando “static”)? Parece um bocadinho amarrado.

V

Estou usando uma sessão em uma classe que envia Email:

...
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email
...
Criado 26 de março de 2012
Ultima resposta 26 de mar. de 2012
Respostas 9
Participantes 5