Partage
  • Partager sur Facebook
  • Partager sur Twitter

package d'un .class

Sujet résolu
    27 janvier 2012 à 18:17:03

    Bonjour,

    Je travaille actuellement sur une application où j'ai besoin a partir d'un fichier .class de recuperer le package de cette classe (ou le nom de la classe sous la forme "package.classe").

    J'aurais donc voulu savoir si cela était possible et si oui comment faire ?

    Cordialement.

    jusabatier
    • Partager sur Facebook
    • Partager sur Twitter
      28 janvier 2012 à 17:57:05

      LE plus simple consiste à charger la classe pour voir...

      class MyClassLoader extends ClassLoader {
      protected Class findClass (String name) throws ClassNotFoundException {
      try {
      InputStream in = new BufferedInputStream(new FileInputStream(name));
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      byte[] buf = new byte[1024];
      int n;
      while ((n=in.read(buf,0,buf.length)>0) out.write(buf,0,n);
      in.close();
      byte[] data = out.toByteArray();
      Class c = defineClass(null, data, 0, data.length);
      resolveClass(c);
      return c;
      } catch (Throwable t) {
      t.printStackTrace();
      throw new ClassNotFoundException(name);
      }}}
      


      Utilisation simplissime :
      Class c = new MyClassLoader() .loadClass("MachinBidule.class");
      


      Par contre si tu n'a pas réellement besoin de la classe par après, ça peut être assez moyen pour les performances... dans ce cas il y a peut-être moyen de repérer le nom complet de la classe en clair en lisant le fichier directement.
      • Partager sur Facebook
      • Partager sur Twitter
        30 janvier 2012 à 23:13:21

        Non c'est parfait c'est ce que je voulais faire sauf que mon classloader prenait le nom de la classe entier ^^ .

        Merci pour ton aide.

        Cordialement

        jusabatier
        • Partager sur Facebook
        • Partager sur Twitter
          31 janvier 2012 à 7:46:51

          Citation

          Non c'est parfait c'est ce que je voulais faire sauf que mon classloader prenait le nom de la classe entier


          Oui, comme tu peux le voir dans mon code, il faut un peu ruser pour ne pas avoir à l'indiquer. C'est pour cette raison qu'on ne peut pas se contenter d'utiliser URLClassLoader...
          • Partager sur Facebook
          • Partager sur Twitter

          package d'un .class

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown