Acessando classes de um pacote qualquer

8 respostas
E

Boa tarde a todos.
Há alguma técnica conhecida para varrer qualquer classe de um pacote informado dinâmicamente pelo usuário.

Como assim?!?

A proposta é, informando o nome de um pacote qualquer, eu conseguiria varrer todas as classes contidas nela, e assim, conseguir algumas informações que posteriormente estarão padronizadas, facilitando assim a geração de relatórios para o grupo de manutenção de sistemas.
Há possibilidade de conseguir isso?

Grato.
Ederson.

8 Respostas

Kenobi

Você pode fazer isso usando a API Reflection.

Mais detalhes em : http://java.sun.com/docs/books/tutorial/reflect/

Abraço,

Kenobi

“Ederson Soares”:
Boa tarde a todos.
Há alguma técnica conhecida para varrer qualquer classe de um pacote informado dinâmicamente pelo usuário.

Como assim?!?

A proposta é, informando o nome de um pacote qualquer, eu conseguiria varrer todas as classes contidas nela, e assim, conseguir algumas informações que posteriormente estarão padronizadas, facilitando assim a geração de relatórios para o grupo de manutenção de sistemas.
Há possibilidade de conseguir isso?

Grato.
Ederson.

cv1

Possivel, eh, mas vc vai ter que fazer um esforcinho sobrenatural - um ClassLoader que indexa JARs, ao minimo… o Eclipse faz isso, entao certamente eh possivel :wink:

smota

Não pode não. Ou pode? Nonon … acho que não. Reflection trabalha com classes, não com packages … a parte de saber as informações das classes seria com reflection, a listagem das classes é com IO mesmo.

“Ederson Soares”:
A proposta é, informando o nome de um pacote qualquer, eu conseguiria varrer todas as classes contidas nela, e assim, conseguir algumas informações que posteriormente estarão padronizadas, facilitando assim a geração de relatórios para o grupo de manutenção de sistemas.
Há possibilidade de conseguir isso?

Precisa mesmo disso? complexidade de mais pra ganho de menos, é muito mais fácil já padronizar as classes ou no mínimo os nomes possíveis.

Se precisar mesmo … packages nada mais são do que caminhos para as classes, então vc só tem que descobrir onde estão as classes, se estiverem em um JAR abra o danado, procure a pasta da package e liste os arquivos .class … se estiverem em uma pasta liste seu conteúdo direto.
O problema é que acho que vc nao tem como saber pelo classloader onde está a classe então teria que varrer todo o classpath :shock:

E

Olá a todos.

Putz, bota sobrenatural nisso… :shock: hehehe
Os questionamentos que estou colocando aqui no fórum é para solucionar a questão de coletar a informação da classe sem necessidade de impactar muito nos padrões de codificação já pré-estabelecidos.
Já vi de tudo um pouco, até estou dando uma olhada em uma classe chamada Version, que está no pacote com.sun.corba.se.internal.util.Version, mas que, por forçar o main para a visualização das informações externamente, acaba impactando nas estruturas básicas de outros objetos que nem sonhariam em ter este método.
Estou tentando criar algo simples mas de grande importância para que a questão Versionamento chegue finalmente ao fim. Não conheço a linguagem tão a fundo, mas estou correndo atrás para aprender o máximo que conseguir. Desculpem-me se estou sendo chato com isso…

Abraços a todos.
Ederson.

louds

usa java.util.jar

cv1

:?: :?: :?:

louds

O pacote java.util.jar tem um monte de classes que te facilitam esse trabalho. Depois disso basta procurar pelo pacote nos varios jars da aplicação e no classpath e para isso não existe atalho.

cv1

Nossa, disfarça :smiley:

Eu tava pensando que existia algum JAR chamado “java.util.jar”, alguma lib à parte ou coisa do tipo :smiley:

Criado 26 de janeiro de 2004
Ultima resposta 26 de jan. de 2004
Respostas 8
Participantes 5