Passar valores para uma string em uma classe

14 respostas
D

boa noite pessoal, to aqui tentando criar um aplicativo para atualizar um programa do tipo cliente servidor, mas quando passo os dados de um metodo para a o objeto que criei o java me retorna um erro como se fosse nul, se alguem puder me dizer ai onde que errei … vlw

public class Servidor {
        String dominio ;
        String ip ;
        String tipo;
      
                                  }

public static void main(String[] args) throws FileNotFoundException, IOException {
        Servidor Loja = recebeDados();
        Hashtable authEnv = new Hashtable(11);
        authEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
        authEnv.put(Context.PROVIDER_URL,"ldpa://"+Loja.dominio+":389 ");
        authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
        authEnv.put(Context.SECURITY_PRINCIPAL, "administrador@"+Loja.dominio);
        authEnv.put(Context.SECURITY_CREDENTIALS, "xxx"+Loja.ip+"x");
        System.out.println("Dominio: "+Loja.dominio);

    }

    private static Servidor recebeDados(Servidor loja) throws FileNotFoundException, IOException {
        
        Map<String, String> tags = new HashMap<String, String>();
        File arquivo = new File("C:/caminho/conf.xml");
        BufferedReader reader = new BufferedReader(new FileReader(arquivo));
            String line = "";
                  int inicio = 0;
                  int fim =  0;
                  while((line = reader.readLine()) != null){
                      if(line.startsWith("<dominio>")){
                          inicio = "<dominio>".length();
                          fim = (line.length()-1) - "</dominio>".length();
                          tags.put("dominio", line.substring(inicio, fim));
                          loja.dominio =tags.get("dominio");
                                                      }
                         else{
                            if(line.startsWith("<ip>")){
                            inicio = "<ip>".length();
                            fim = (line.length()-1) - "</ip>".length();
                            tags.put("ip", line.substring(inicio, fim));
                            loja.ip=tags.get("ip");
                                                         }
                               else{
                                  if(line.startsWith("<tipo>")){
                                     inicio = "<tipo>".length();
                                     fim = (line.length()-1) - "</tipo>".length();
                                     tags.put("tipo", line.substring(inicio, fim));
                                      loja.tipo = tags.get("tipo");
                                                                }
                                   }
                              }

                                                           }
             

              return loja;
    }
}

so que quando executo o systema me retorna a seguinte messagem

Exception in thread main java.lang.NullPointerException

at sav.Main.recebeDados(Main.java:52)

at sav.Main.main(Main.java:28)

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

a linha 52 a qual o erro se refere e a

loja.dominio =tags.get("dominio");

14 Respostas

E

Alquem me corrija se eu tiver errado.

Olha você declarou o metodo recebendo um objeto como parametro.

private static Servidor recebeDados(Servidor loja)

e na chamada desse metodo vc não ta passando esse parametro.

Servidor Loja = recebeDados();

você tem que passar um objeto para esse metodo.

L

Cara não sei como o compilador não ta acusando o erro antes, tu deve ter métodos sobrecarregados ai.

private static Servidor recebeDados(Servidor loja) throws FileNotFoundException, IOException {

Esse método tem que receber um objeto Servidor como argumento.

Servidor Loja = recebeDados();

Tu não ta passando nenhum objeto servidor.

Espero que ajude…

D

opa, eu inseri errado, o correto era

Servidor Loja = receberDados();

e no metodo criaria outro objeto dentro do metodo

private static Servidor recebeDados() throws FileNotFoundException, IOException {   
Servidor loja = null;
D

no caso eu posso fazer isso?
chamar o objeto com variaveis nulas e inserir os valores dentro de um metodo? pq pra min isso aki ta certo

Servidor Loja =null;

e depois passar o valor da String para a variavel.

Loja.dominio = "loja0XX";
E

Djalma_jota:
no caso eu posso fazer isso?
chamar o objeto com variaveis nulas e inserir os valores dentro de um metodo? pq pra min isso aki ta certo

Servidor Loja =null;

e depois passar o valor da String para a variavel.

Loja.dominio = "loja0XX";

Cara eu sou novo no java, mas se eu não me engano você tem que instanciar um objeto para poder utilizalo.
Exemplo.

Servidor loja = new Servidor();

assim você instancia ele com um construtor padrão sem argumentos, ai você pode alterar os valores dos atributos.

L

Não sei se entendi o que tu falou, mas se for o que entendi é como o exilado explicou, é necessário instanciar o objeto antes de usa-lo.

D

Opa achei o erro,

public static void main (String Args)

declarando ali o static ele dava erro quando instanciava a classe
agora rodou aki e ficou assim

public void main(String[] args) throws FileNotFoundException, IOException {
        Servidor Loja = recebeDados();

e o metodo

public Servidor recebeDados() throws FileNotFoundException, IOException {
        Servidor loja = new Servidor ();

coisa de principiante!!

Vlw Galera.

E

Estranho o main() eu só declaro como static e nunca deu erro.
mas já que o seu funcionou maravilha… :-o

D

kkk
pois é retirar o static do main nao deu certo…

so que se eu coloco, quando eu instacio o netbeans me retorna o erro

non-static method receberDados cannot be refenced on static context

D

bom, nao sei se é so dessa maneira que funciona… mas aqui funcionou finalmente…

tive qeu colocar o metodo dentro da classe e chamar dessa forma

Servidor Loja = new Servidor();
Loja.recebeDados(Loja);

ai consegui retornar os valores que preciso.

E

estranho quando você declara um metodo como static não é preciso instanciar um objeto da classe para chamar o metodo.

tive qeu colocar o metodo dentro da classe e chamar dessa forma

Servidor Loja = new Servidor();
Loja.recebeDados(Loja);

certo mas seu metodo tava fora da classe?
mais uma duvida vc ta utilizando uma unica classe ou mais que uma?

D

ate aqui so uma, mas a outra classe para as conf das estacoes.
to comecando em java, tudo que vi ate agora foi pela net

mas tipo

o metodo estava fora da classe sim, pois pretendia usa-lo em outra classe…
correto?

E

certo mas você declarando o metodo como static na ora em que você queser utilizalo em outra classe é só charmar o nome da classe ponto e o nome do metodo.
ex:
Servidor.recebeDados(Loja);

D

humm, file.
valew
vou tentar aqui

Criado 8 de janeiro de 2011
Ultima resposta 11 de jan. de 2011
Respostas 14
Participantes 3