Duvida cruel: A verdade sobre pacotes!

2 respostas
R
Pessoal, sinceramente eu nao estou conseguindo entender direito esse lance de pacotes. Queria saber exatamente como eh isso para poder entender melhor. Quando eu digo que uma classe que eu acabo de criar, fara´ parte de pacote sss, o que acontece na real? Este meu arquivo precisa ficar dentro de um diretorio sss no meu diretorio raiz das classes ou nao tem absolutamente nada haver? Estou passando por problemas que estao me deixando doido. Vou tentar explicar via codigo








Eu tenho uma classe chamada Usuario e esta se encontra em um diretorio /sss com o seguinte codigo:





package sss;





import java.sql.<em>;





public class Usuario {





	Connection conexao = null;


	ResultSet resultado = null;





	String teste = null;





	private String login = null;


	private String senha = null;


	


	public int setLogin(String _login) {


		this.login = _login;


		return 1;


	}





	public int setSenha(String _senha) {


		this.senha = _senha;


		return 1;


	}


	


	public String getLogin() {


		return this.login;


	}


	


	public String getSenha() {


		return this.senha;


	}


	


	public String getResultado() {


		return this.teste;


	}


}





Ate ai tudo bem, dai eu quero criar outra classe digamos t.java e quero  poder criar nela um objeto do tipo Usuario. Escrevo o codigo direitinho e jogo ela pra dentro de /sss tambem:








import sss.</em>;





public class t {





	public Usuario x = new Usuario();


}





Mas me ocorre o seguinte erro na hora de criar o bytecode:





t.java:3: package sss does not exist


import sss.<em>;





Entao continuando com dores de cabeca eu tento veh o que ocorre se eu retirar o import sss.</em> da minha classe t.java e o resultado eh o seguinte:





t.java:5: cannot access Usuario


bad class file: .\Usuario.class


class file contains wrong class: sss.Usuario


Please remove or make sure it appears in the correct subdirectory of the classpath.





        public Usuario testexxxx = new Usuario();








Continuando com meu legado e depois de muita dores de cabeca eu pego e removo a linha de package da minha classe Usuario, que ate entao tinha compilado perfeitamente. E o que acontece pra minha alegria? A classe t.java consegue ser compilada!!! Ou seja, o que eu pensava ateh hoje ser um pacote vai tudo ladeira abaixo!!! Entao peco ajuda dos mais esperientes desse forum que possam me explicar melhor o fundamento do ´´package´´ e como eh a ligacao dele com os diretorios e subdiretorios na raiz de onde estamos trabalhando porque, sinceramente, eu nao entendo mais ou quem sabe eu nunca aprendi o correto. :(((





Desde ja´ obrigado!





p.s. meu teclado tah toalmente desconfigurado! ;]

2 Respostas

M

Caro Ricardo,





Pelo q entendi vc está colocando as duas classes, a que importa e a que está sendo importada, dentro do mesmo diretório, ñ é isso? Pois bem, para seu propósito isso está incorreto. Voce deve colocar a classe que está importando fora desse diretório. Você pode colocar esta classe e este diretório dentro de um outro diretório qualquer, vai funcionar assim, mas eles devem estar no mesmo nível na estrutura de diretórios do Windows, entendeu? Ou, voce pode também definir no CLASSPATH do Windows o diretório que contém este outro diretório cujo conteúdo é a classe que vc criou, que é a que está sendo importada.



Quando você colocou as duas classes num mesmo diretório e retirou a linha "import" do código, o programa não apresentou erro de compilação porque as duas classes estão num mesmo local, e assim uma consegue referenciar a outra, não há necessidade de importação. Mas para que uma classe consiga ser instanciada por outra nesse caso ela deve ser public.



Qqr dúvida, fale!!



Abraço!!

R

Muiiiiiiiiitooooooooooooo obrigado mesmooo Marcelo!

Sanou minhas du´vidas!

Criado 10 de julho de 2003
Ultima resposta 11 de jul. de 2003
Respostas 2
Participantes 2