Dúvidas com package

firmeza pessoal!

Eu estou com seguinte problema, vou dar um exemplo:

Tenho uma classe Object que salvei no seguinte caminho : “c:\java\empresa\nome.java”,essa class é mais ou menos assim:

package java.empresa;
public class empresa extends Object
{

}

E tenho uma outra class no seguinte caminho: “c:\java\empresa\funcionarios\funcionarios.java” eu quero que essa class busque a variáveis da class empresa, então coloquei assim:

import java.empresa.*;
public class funcionarios extends empresa
{

}

Ele está dando a mensagem de erro que não está encontrando a class empresa, qual será o problema, será que estou usando o import de modo errado?

Fala alexandre…

Primeiro, suas classes tem que estar no classpath, isso é garantido se você estiver utilizando uma IDE como Eclipse, NetBeans, etc…

Se vc estiver utilizando o JCreator pode dar pau, porque ele tende a cometer catástrofes quando se trata de pacotes a não ser que vc crie um projeto.

E se vc estiver programando no bloco de notas, é pior ainda.

Se vc ainda não sabe muito bem o q é o tal do classpath, existem diversos tutoriais e papers básicos sobre java q vc rapidinho pega. Aqui mesmo no portal java vc encontra uns muito bons.

Se o seu problema não for o classpath, então tem dois erros no seu código que podem ser a causa.

(1) a classe empresa tem necessariamente de ser um arquivo chamado empresa.java, e não nome.java

ou seja. se o código é esse:

package java.empresa;
public class empresa

entende-se que exista o arquivo:

“\java\empresa\empresa.java”

Eu não coloquei o “c:” na frente, porque o diretório java\empresa pode estar em qualquer lugar, desde que esse lugar conste no classpath.

(2) não foi declarado o pacote da segunda classe

package java.empresa.funcionarios;
import java.empresa.*; // OU "import java.empresa.empresa;"

Mais alguns detalhes, ao desenhar uma classe, vc não precisa adicionar a linha “extends Object”. Todas as classes java, quaisquer que sejam, naturalmente extendem object. :grin:

Tenta dar uma lida em algum tutorial básico de Java, pq pra programar bem nessa linguagem, basta dominar os fundamentos, o resto vem fácil.

Um abraço!!

Cara antes valeu pela força!

Bom vamos eliminar os erros, o nome do arquivo ele está salvo com o nome da class ou seja o nome:

public class empresa
{

}

e salavei o nome do arquivo como empresa.java, até aí pelo que entendi tudo ok.

Realmente eu tenho que definir o pacote da segunda class.
Quanto a classpath, se eu entendi é aquela que eu defini quando setei o java assim que instalei, ou seja você quer dizer que as classes que eu crio para definir como pacote tem estar dentro daquele caminho, porque no caso os exercícios que eu desenvolvi antes de tentar usar pacotes funcionavam legal em qualquer diretório, devido ao classpath que defini a compilação pode ser realizada em qualquer diretório. Ou entendi errado?
Por acaso se eu tenho uma class em um determinado diretório e criei outra em outro diretório essa segunda class pode trabalhar com a primeira ou elas tem que estar obrigatóriamente no mesmo diretório?
No caso eu ainda estou programando com bloco de notas mas vou migrar para o eclipse para ver se melhora a situação

O Classpath é uma grande String, com vários diretórios separados por “;”.

Ela pode ser encontrada através do comando:

System.getProperty(“java.class.path”);

Quando o java tem que procurar uma classe, ele tenta encontrar ela no classpath, e se a classe esta num pacote, ela procura num sub-diretorio a partir dos diretorios do classpath que tenha o mesmo nome do pacote.

Para definir o classpath programando pelo bloco de notas, você tem de colocar os diretorios na hora de rodar o programa, da seguinte maneira:

java -cp [diretorios] empresa (isso no dos)

Eu naum gosto muito disso, pq qdo da problema eu nunca tenho certeza se compilei errado, ou se só escrevi o classpath de alguma maneira ruim, hehehe…

Um abraço! QQer coisa pode escrever.

Colega;

Estou com o mesmo problema que você e pelas pesquisas que fiz, existe uma configuração para classpath no netbeans mas não conseguiu localizar. Gostaria de saber se você resolveu seu problema e como fez.

Valeu.

E aí excon ainda não consegui cara, estou tentando

E aí rr_castaneda

Cara achei classpath, pelo que eu entendi você está falando que basta eu colocar o diretório do pacote na linha do classpath que vai funcionar normal. Isso programando no bloco de notas.
se eu trabalhar com o eclipse ou NetBeans preciso fazer essa configuração também?

Se vc trabalhar com Eclipse ou Netbeans, não tem que se preocupar com classpath…

Ele automaticamente chama a máquina virtual de java com as configurações necessárias, porém estas IDE´s podem assustar quem está começando…

Faça alguns testes com o JCreator primeiro, por exemplo. =)

Ou se for daqueles corajosos, pega um exemplo de hello world no eclipse, e manda ver…

Abs!

Certo cara vou tentar :grin:

Cara é o seguinte estou totalmente perdido nesse negócio de pacotes e preciso trabalhar com o bloco de notas. Será que você não poderia me dar um passo à passo de como configurar a classpath no windows?
Preciso mesmo de ajuda cara!

O meu código ficou assim:

package exercicios.produtos;
public class Produto extends Object
{
    private int codigo;
    private double preco;
    private String descricao;

    public Produto(int codigo, double preco, String descricao)
    {
       this.codigo = codigo;
       this.preco = preco;
       this.descricao = descricao;

       public int getCodigo()
       {
          return codigo;
       }
       public double getPreco()
       {
          return preco;
        }
        public String getDescricao()
        {
           return descricao;
         }
}

 

A outra class está assim:


package exercicios.produtos.livro;
import exercicios.produtos.*;
public class Livro extends Produto
{
    private String autor;
    
    public Livro (int codigo, double preco, String descricao, String autor)
    {
        super(codigo,preco,descricao);
        this.autor = autor;
     }
   
     public String autor getAutor()
     {
        return autor;
     }
}
 

E para finalizar o teste de variáveis fiz uma terceira class que escreve nas variáveis, ela ficou assim:



package exercicios.produtos.livro;
import exercicios.produtos.livro*;
public class Testaproduto
{
    public static void main(String args[])
    {
        Livro livro = new Livro(1,55.12,"Aprenda JAVA","Alexandre Manowar");
        System.out.println("Cod.:"+livro.getCodigo());
        System.out.println("Desc.:"+livro.getDescricao());
        System.out.println("Preço:"+livro.getPreco());
        System.out.println("Autor:"+livro.getPreco());
   }
}

eae gente, boa tarde
me corrijam se eu estiver errado (por favor)
essa ultima classe public class Testaproduto naum teria q se encontrar no pacote exercicio.produto.livro.Testaproduto ou exercicio.Testaproduto ???