Loading ...
Sorry, an error occurred while loading the content.
 

Re: [riojug] Como saber se uma classe implementa determinada interface

Expand Messages
  • Marcos Eliziario Santos
    Dá um import java.util.jar e tenta algo assim(não rodei pra ver se funciona): static void main(String[] args) { JarFile jf; ZipEntry ze; try { jf = new
    Message 1 of 6 , Oct 31, 2003
      Dá um import java.util.jar e tenta algo assim(não rodei pra ver se funciona):
       
      static void main(String[] args) {
              JarFile jf;
              ZipEntry ze;
              try {
                  jf = new JarFile("teste.jar");
              } catch(IOException ex){}
              Enumeration enum = jf.entries();
              while (enum.hasMoreElements()){
                  ze = (ZipEntry)enum.nextElement();
                  if (ze.getName().endsWith(".class")) {
                      if (ze.getClass() instanceof MinhaClasse)
                          System.out.println("achei o desgraçado!")
                  }
              }
         

      Fabiano de Siqueira Freitas <fabsiqueira@...> wrote:
      Fala Eliziário,
          Este é que está sendo o meu problema.
          Realizo a pesquisa através da classe File, para obter os arquivos do diretório com a terminação .class do diretório. Com os métodos da classe Class consigo obter todas a informações que preciso.
          O problema é que quando estou dentro do jar, a pesquisa falha, pq de outro jar só consigo obter as classes deste jar, e quando tento acessar outro jar, preciso abrí-lo através da classe JarFile, só que aí não consigo instanciar a classe File de maneira que percorra os dados deste JarFile.
          Estou tendo que descomprimir o jar pesquisado, pesquisar suas classes, direto no diretório que usei para descomprimí-lo, ver se implementam a interface que desejo, e depois remover todos os arquivos descomprimidos, para não ficar com redundância no diretório. Isso na verdade é um bacalhau que fiz até conseguir uma solução melhor.


      Marcos Eliziario Santos <marcovitch@...> wrote:
       
      Fala Fabiano,
      Se você sabe o nome da classe, é fácil : "instance of".
      Mas acho que não é isso que vc quer, certo? Bem, se vc tem um mecanismo que pesquisa o CLASSPATH e consegue localizar uma classe que implementa uma determinada interface, esse mecanismo tem que funcionar com JAR tbém, mas nesse caso não basta ter o diretório no CLASSPATH, você tem que indicar o jar também, algo tipo /opt/minhaapp/meujar.jar e não apenas
      /opt/minhaapp/
      abs,
      Marcos Eliziário
       
       

      Fabiano de Siqueira Freitas <fabsiqueira@...> wrote:
      Amigos,
          Tenho um .jar onde existe uma classe que implementa uma determinada interface. Tenho outro .jar que tbm possui um classe que implementa tal interface.
          Como faço para saber, em tempo de execução, a partir da execução do primeiro .jar, se o segundo .jar realmente possui uma classe que implementa a tal interface, supondo que o 2º jar pode ou não ter uma classe que implemente esta interface ?
        
          Hoje,consigo capturar esta informação somente se estiver com os .class no diretório de pesquisa, ou seja, não estão compactados em .jar.
       
      ex : jar 1  - class A1
      ex : jar 2  - class A2 implements InterfaceX
         a partir de jar 1 preciso saber se A2 implementa InterfaceX
       
      Grato,
        Fabiano Freitas



      Yahoo! Mail - o melhor webmail do Brasil. Saiba mais!

      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Participe também das outras listas do RioJUG:
      JS Faces - RioJUG (http://groups.yahoo.com/group/jsf_riojug/)
      SCJP - RioJUG  (http://groups.yahoo.com/group/scjp_riojug)
      SCWCD - RioJUG (http://groups.yahoo.com/group/scwcd_riojug)
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Rio Java User's Group (grupo oficial da SUCESU-RJ)

      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Nosso site:            http://www.riojug.org
      Informações:           http://groups.yahoo.com/group/riojug
      Enviar mensagens:      riojug@yahoogroups.com
      Inscrever-se no grupo: riojug-subscribe@yahoogroups.com
      Retirar-se do grupo:   riojug-unsubscribe@yahoogroups.com
      Falar com o Moderador: riojug-owner@yahoogroups.com
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


      Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.



      Yahoo! Mail - o melhor webmail do Brasil. Saiba mais!

      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Participe também das outras listas do RioJUG:
      JS Faces - RioJUG (http://groups.yahoo.com/group/jsf_riojug/)
      SCJP - RioJUG  (http://groups.yahoo.com/group/scjp_riojug)
      SCWCD - RioJUG (http://groups.yahoo.com/group/scwcd_riojug)
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Rio Java User's Group (grupo oficial da SUCESU-RJ)

      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Nosso site:            http://www.riojug.org
      Informações:           http://groups.yahoo.com/group/riojug
      Enviar mensagens:      riojug@yahoogroups.com
      Inscrever-se no grupo: riojug-subscribe@yahoogroups.com
      Retirar-se do grupo:   riojug-unsubscribe@yahoogroups.com
      Falar com o Moderador: riojug-owner@yahoogroups.com
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


      Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.



      Yahoo! Mail - o melhor webmail do Brasil. Saiba mais!

      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Participe também das outras listas do RioJUG:
      JS Faces - RioJUG (http://groups.yahoo.com/group/jsf_riojug/)
      SCJP - RioJUG  (http://groups.yahoo.com/group/scjp_riojug)
      SCWCD - RioJUG (http://groups.yahoo.com/group/scwcd_riojug)
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Rio Java User's Group (grupo oficial da SUCESU-RJ)

      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Nosso site:            http://www.riojug.org
      Informações:           http://groups.yahoo.com/group/riojug
      Enviar mensagens:      riojug@yahoogroups.com
      Inscrever-se no grupo: riojug-subscribe@yahoogroups.com
      Retirar-se do grupo:   riojug-unsubscribe@yahoogroups.com
      Falar com o Moderador: riojug-owner@yahoogroups.com
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


      Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.



      Yahoo! Mail - o melhor webmail do Brasil. Saiba mais!
    Your message has been successfully submitted and would be delivered to recipients shortly.