Duvida em relação a pacote

16 respostas
A

tenho o seguinte arquivo: Loja.java

package regras_de_negocio;

import java.util.ArrayList;

public class Loja {

private short codigoLoja;

private Estoque estoque;

//private ArrayList vendedores;

//private ArrayList clientes;

//private ArrayList pedidos;

//private ArrayList vendas;

}

e esse outro : Estoque.java

package regras_de_negocio;

public class Estoque {}

ambos estão no mesmo pacote. Por que então eu não concigo usar a classe Estoque dentro da classe Loja?

16 Respostas

marcelo.bellissimo

Não consegue?
Voce compilou a classe antes de tentar utilizá-la?
Aliás, qual IDE você está usando pra programar? NetBeans, Eclipse, jGrasp (argh)… Notepad ?? :smiley:

Recomendo usar o Eclipse…

lgr

Mas porque vc não conCegue usar? o que acontece?

marcelo.bellissimo

Provavelmente ele não compilou a classe Estoque e está tentando compilar a classe Loja, e como o Java busca pelo arquivo .class, não encontra nada, e dá erro, apesar dos arquivos estarem na mesma pasta… por isso que eu falo, aprender Java no Notepad é um saco, não sei se vale a pena o cara aprender isso… compilar classe por classe antes de usá-las, trabalho braçal e repetitivo, coisa que qualquer IDE decente resolve transparentemente pro programador…

A

ma verdade uso o gedit do linux, e eu compilei a classe estoque antes será que eu tenho que definir o diretoria raiz na declaração dos pacotes?

marcelo.bellissimo

Não, eu acho que só declarando o classpath no momento da compilação já resolve… não me lembro, mas creio que era algo assim:

//linha de comando: C:> javac -cp c:\pasta_onde_estao_os_arquivos_.class\

lina

Oi,

Faltou o import?!

Tchauzin!

marcelo.bellissimo

lina:
Oi,

Faltou o import?!

Tchauzin!

Oi! :stuck_out_tongue:

Não, não… classes no mesmo diretório não precisam de import… é problema de classpath indefinido mesmo…

A

é deve ser isso mesmo, daqui apouco vou testar

lina

marcelo.bellissimo:
lina:
Oi,

Faltou o import?!

Tchauzin!

Oi! :stuck_out_tongue:

Não, não… classes no mesmo diretório não precisam de import… é problema de classpath indefinido mesmo…

Oi,

Realmente… não tinha visto!

Sorry…

Tchauzin!

A

bem vamos começar denovo tenho a seguinte estrutura de diretórios no linux

nesse diretório -> /home/allan/UTFPR/Projeto_Integrado/implementacao_projeto/implementacao_filial eu tenho o seguinte :

um arquivo .java chamado -> Main.java
uma pasta chamada -> regras_de_negocio
uma pasta chamada -> api_grafica

dentro da pasta regras_de_negocio eu tenho os seguintes arquivos .java ->

package regras_de_negocio;

import java.util.ArrayList;

public class Loja {

private short codigoLoja;
private Estoque estoque = new Estoque();
//private ArrayList<Vendedor> vendedores;
//private ArrayList<Cliente> clientes;
//private ArrayList<Pedido> pedidos;
//private ArrayList<Venda> vendas;

}

package regras_de_negocio;

public class Estoque {

public void mostrarEstoque() {

	System.out.println("oi");	
}

}

não concigo compilar a classe Loja da o seguinte erro :

Loja.java:9: cannot find symbol

symbol  : class Estoque

location: class regras_de_negocio.Loja

private Estoque estoque = new Estoque();

^

Loja.java:9: cannot find symbol

symbol  : class Estoque

location: class regras_de_negocio.Loja

private Estoque estoque = new Estoque();

^

2 errors

alguem me explica como eu posso compilar usando o classpath, se é q é esse o problema…

A

outra duvida por que geralmente usa-se um pacote chamado com?

marcelo.bellissimo

Geralmente se usa isso pra identificar a procedencia do código, usa-se a mesma “regra” que são adotadas para as URL’s das empresas… também para tornar o nome do pacote “único”, já que essa regra visa a unicidade da URL da empresa…

.br - Empresa do Brasil
.com - Comercial
.empresa - Nome da empresa (… tá, não precisava falar isso… :smiley: )

Daí:
br.com.empresa.meu_sistema.etc.etc.etc…

Agora, quanto ao seu problema, certeza que é problema de Classpath… você fez o que eu te indiquei nos posts acima?
Quando for compilar E rodar seu programa Java, inclua na linha de comando a variavel -cp com o caminho onde está seu arquivo .class/.java …

Eu gostaria de te dar uma sugestão… o gEdit é o Notepad do Linux, use uma ferramenta decente, baixe o Eclipse, dependendo da versão do Linux que você usa, é só dar um ‘apt-get eclipse’ e pronto, problemas resolvidos!! :smiley:

ViniGodoy

Allan, talvez esse usuário possa te ajudar. :slight_smile:

Mas eu concordo com o marcelo, isso é claramente um problema de classpath. Confira se o seu foi definido corretamente.

A

obrigado pelas respostas, então concegui resolver aki colocando o nome totalmente qualificado da classe, agora eu entendi como usar o -d para colocar os .class num diretório especifico. Mas ainda nao sei pra q serve a diretiva -cp.

Há pra quen falou de IDE ai eu até tenho o netbeans e o eclipse, mas acho que as facilidades que elas proporcionam um pouco prejudiciais ao aprendizado, sem falar q eu adoro o terminal ^^

ViniGodoy

Dá uma lida aqui: http://www.guj.com.br/article.show.logic?id=108

Ele explica certinho como o classpath funciona e para que serve a diretiva -cp

marcelo.bellissimo

allantrevisan:
obrigado pelas respostas, então concegui resolver aki colocando o nome totalmente qualificado da classe, agora eu entendi como usar o -d para colocar os .class num diretório especifico. Mas ainda nao sei pra q serve a diretiva -cp.

Há pra quen falou de IDE ai eu até tenho o netbeans e o eclipse, mas acho que as facilidades que elas proporcionam um pouco prejudiciais ao aprendizado, sem falar q eu adoro o terminal ^^

Bem, pra aprendizado é bom mesmo… mas não se esqueça, no mundo profissional você não vai programar no terminal, vai programar na IDE, então já comece á se acostumar com elas…

Criado 17 de maio de 2010
Ultima resposta 19 de mai. de 2010
Respostas 16
Participantes 5