Uso de Packages no Eclipse

Colegas ,

Fiz um projeto no JEdit com várias classes e compilava sem usar packages no código , colocando os arquivos class gerados em um pasta separada ( output folder ) . Agora migrei p/ o Eclipse e tento usá-los com packages no Eclipse e não consigo . Quando coloco no inicio dos arquivos java a instrução “package br.com.eu” , os arquivos class gerados vão para o diretorio configurado em Package Explorer - > Meuprojeto-> Properties -> Java Build Path -> Build Output Folder ; se crio uma pasta br/com/eu em src , ele não aceita pois diz que não pode colocar a subpasta pasta em src . Notei que quando crio um projeto novo e crio um package ( via wizard ), e depois crio as classes em branco , ao compilar ele coloca tanto o arquivo java quando o class na mesma pasta (src/br/com/eu) !!!
Alguém sabe onde estou pisando?

Luiz Renato

não sei se entendi direito o seu problema

vc quer ter nas classes os arquivos fontes (.java) e na hora de compilar e for gerado o .class vc quer que eles vao para outra pasta, é isso???

se for, o Eclipse ele ja em runtime de desenvolvimento ele vai compilando e jogando o arquivo .class no mesmo diretorio do .java

não sei se o que vc quer dar pra fazer dentro do eclipse, mas aconselho vc fazer isso utilizando o ANT, tem um excelente tutorial sobre o ANT aqui no GUJ, acho que ele resolve seu problema

espero ter ajudado

Cara, eu tive os mesmos problemas para entender como o Eclipse funciona.

O fato do seu Eclipse estar jogando tanto o Java como a Classe dentro de um mesmo diretório, significa que você tem um build output default.

Você tem que configurar um, ou vários, build output’s. Ou um para todo o sistema, ou um para cada diretório de sources (source path). Você configura isso em Propriedades do seu projeto.

Em cada diretório de source (source path) você pode ter “n” packages.

Você pode criar suas classes nos seus packages ou, arrastar de algum lugar para os packages, o Eclipse trata de arrumar a sua cláusula “package x.y.z” dentro da classe (isso é bacana no Eclipse).

Agora, se você tem uma compilação padronizada, tipo, para gerar uma Web Application, ou uma aplicação J2EE completa, com JAR’s, WAR’s e deployment’s, então você vai ter que aprender ANT.

O Eclipse facilita bastante a integração com ANT, mas você ainda tem que aprender ANT para fazer o Eclipse trabalhar satisfatoriamente.

Caros colegas,

Acho q fui meio confuso… É que quando vc tem um pasta /scr e cria um arquivo “Exemplo.java” usando a instrução package a.c.b , o arquivo .java vc grava em /src , mas o .class gerado é colocado num diretório /a/b/c (que é criada quando compilo via linha de comando javac -d . ) que por sua vez fica dentro de /src .
Aí Sandro , ta começando a clarear . Fiquei meio perdido pelo fato de obrigatoriamente ter um build output , que é diferente do usado dessa compilaçõa via comando que mencionei acima .
Quando eu for executar p. ex: devo colocar o classpath do pacote (a/b/c) ou do build ?

Origado pela paciência

Luiz Renato

Hehehehehe, cara agora saquei tudo, você realmente está tendo o mesmo problema que eu tive, compilando no prompt com parâmetro “-d”.

Aparentemente esse parâmetro “-d” dá uns “bugs” quando você não coloca a classe em um package, e funciona perfeitamente quando a classe está dentro de um package. Isso ocorreu quando eu usava JDK 1.3, fiz um teste a pouco com 1.4 e funcionou legal.

Se a sua classe tem uma cláusula “package a.b.c;”, e compila como “javac Exemplo.java -d bin”, o compilador entende que a sua classe deve ser gerada em uma estrutura de diretórios como bin/a/b/c. Por isso, ela cria essa estrutura e coloca sua classe como bin/a/b/c/Exemplo.class. Esse comportamento é obrigatório, e o seu classpath deve apontar para bin afim de enxergar sua classe para execução.

Pelo que vi você tá fazendo um pequeno erro. Não é muito correto você colocar seu arquivo Exemplo.java no /src, o correto seria você colocar ele no package /src/a/b/c.

No Eclipse, você deve ter configurado em “Propriedades -> Java Build Path”, um source por raiz de package. Por exemplo: se todos os seus packages são a partir de /src, então você deve ter um único source apontando para /src. Esse source necessita de um output folder, onde serão gerados os arquivos .class, pode ser default ou você pode direcionar para um outro diretório como /bin por exemplo.

No prompt, o seu classpath deve apontar para a raiz dos packages compilados, se você gerou as classes a partir de bin, o classpath deve apontar para bin. Exemplo de classe: bin/a/b/c/Exemplo.class, classpath = bin.

No Eclipse, basta você configurar corretamente os Source Folders.