Pergunta

Em C#, você pode ler facilmente todas as classes de uma determinada montagem.

Estou procurando um recurso equivalente em Java. Preciso que isso ligue automaticamente os grãos EJB ao meu módulo Guice.

Foi útil?

Solução

Infelizmente, parece não haver solução pronta para uso em Java.

Em nosso projeto, usamos uma abordagem ligeiramente modificada sugerida por algum blog. A solução descrita existe para digitalizar o sistema de arquivos e frascos para classes.

Se você quiser escolher apenas aulas implementando alguma interface, você pode fazer uma verificação adicional como clazz.isAssignableFrom(MyInterface.class).

Outras dicas

O equivalente a Java a uma montagem é um arquivo JAR; O conteúdo de um arquivo jar pode ser listado usando as classes em java.util.jar.

Não existe um mechnismo mais geral (como obter todas as classes em um pacote) porque o mechnismo de carregamento da classe Java é muito flexível e permite que as aulas carregadas via HTTP ou geradas em tempo real, por isso é impossível conhecer todas as classes disponíveis.

Aqui está um,http://grepcode.com/file/repo1.maven.org/maven2/com.metapsum/metaposum-scanner/1.0.1/com/metaposum/utils/scanner/packagescanner.java

Nós o usamos em nossa estrutura leve Java, neve, e funciona muito bem.

O maven é como

<dependency>
   <groupId>com.metapossum</groupId>
   <artifactId>metapossum-scanner</artifactId>
   <version>1.0.1</version>
</dependency>    
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top