2015-10-26 14 views
5

Bir kavanoz içinde hangi sınıfın ana veya sağlanmış bir yöntem adı içerdiğini bulmaya çalışıyorum (mümkünse). Şu anda , java kodunu kullanarak bir kavanozun içinde ana tespit eder.

Ben Bu beni bu paketlerden altında paketleri ve sınıfları edinmesini sağlayacak aşağıdaki kodu

public static void getFromJars(String pathToAppJar) throws IOException{ 
    FileInputStream jar = new FileInputStream(pathToAppJar); 
    ZipInputStream zipSteam = new ZipInputStream(jar); 
    ZipEntry ze; 
    while ((ze = zipSteam.getNextEntry()) != null) { 
     System.out.println(ze.toString());   
    } 
    zipSteam.close(); 
} 

var, ama hatta sınıfların içine yöntemlerini elde etmenin mümkün olup olmadığını bilmiyorum. Ayrıca, her bir paket içinde ana bir sınıf olabileceğinden, bu yaklaşımın kavanoz içinde birkaç pkgs için iyi olup olmadığını bilmiyorum.

Herhangi bir fikri takdir ediyorum.

+0

bir java Decompiler kullanabilirsiniz ve bozulamaz sonuçları arayabilirsiniz: http://jd.benow.ca/ – Simulant

+0

Bu doğru, ve ben şu anda kullanıyorum, ama ben daha fazla bir şey istiyorum – Quantico

+0

http://stackoverflow.com/questions/28776205/java-binary-class-file-format-parser çoğaltması? – Marged

cevap

3

fvu'nun yorumları sayesinde, aşağıdaki kodla bitti. Bu yanıt için önemli olmadığından

 public static void getFromJars(String pathToAppJar) throws IOException, ClassNotFoundException 
     { 

      FileInputStream jar = new FileInputStream(pathToAppJar); 
      ZipInputStream zipSteam = new ZipInputStream(jar); 
      ZipEntry ze; 
      URL[] urls = { new URL("jar:file:" + pathToAppJar+"!/") }; 
      URLClassLoader cl = URLClassLoader.newInstance(urls); 

      while ((ze = zipSteam.getNextEntry()) != null) { 

       // Is this a class? 
       if (ze.getName().endsWith(".class")) { 

       // Relative path of file into the jar. 
       String className = ze.getName(); 

       // Complete class name 
       className = className.replace(".class", "").replace("/", "."); 
       Class<?> klazz = cl.loadClass(className); 
       Method[] methodsArray = klazz.getMethods(); 

       } 
      } 
      zipSteam.close(); 
    } 

ben buldum yöntemler kullanan bir kod kaldırıldı

İlgili konular