`
linkyou66
  • 浏览: 228462 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

根据反射技术得到jar包中所有类,以及方法

 
阅读更多
<p>函数背景:希望得到jar包中所有函数和包名,便于在客户端以树型结构展示</p>
<p>public static List&lt;String[]&gt; getJarMethod(String jarFile) throws Exception {<br>  String NORMAL_METHOD= "waitequalsnotifynotifyAlltoStringhashCodegetClass"; <br>  List&lt;String[]&gt; a = new ArrayList&lt;String[]&gt;();<br>  try {</p>
<p> //通过jarFile 和JarEntry得到所有的类<br>   JarFile jar = new JarFile(jarFile);//"D:/sip-test.jar"<br>   Enumeration e = jar.entries();<br><br>   while (e.hasMoreElements()) {<br>    JarEntry entry = (JarEntry) e.nextElement();<br>    //entry.getMethod()<br>    if (entry.getName().indexOf("META-INF") &lt; 0) {<br>     String sName = entry.getName();<br>     String substr[] = sName.split("/");<br>     String pName = "";<br>     for (int i = 0; i &lt; substr.length - 1; i++) {<br>      if (i &gt; 0)<br>       pName = pName + "/" + substr[i];<br>      else<br>       pName = substr[i];<br>     }<br>     if (sName.indexOf(".class") &lt; 0)<br>     {<br>      sName = sName.substring(0, sName.length() - 1);<br>     }<br>     else<br>     {</p>
<p> //通过URLClassLoader.loadClass方法得到具体某个类 <br>      URL url1=new URL("file:D://sip-test.jar");<br>      URLClassLoader myClassLoader=new URLClassLoader(new URL[]{url1},Thread.currentThread().getContextClassLoader());<br>      String ppName = sName.replace("/", ".").replace(".class", "");<br>      Class myClass = myClassLoader.loadClass(ppName);</p>
<p> //通过getMethods得到类中包含的方法<br>      Method m[] = myClass.getMethods();<br>      for(int i=0; i&lt;m.length; i++)<br>      {<br>       String sm = m[i].getName();<br>       if (NORMAL_METHOD.indexOf(sm) &lt;0)<br>       {<br>        String[] c = {sm, sName};<br>        a.add(c);<br>       }<br>      }<br>     }<br>     String[] b = { sName, pName };<br>     a.add(b);<br>    }<br>   }<br>   return a;<br>  } catch (IOException e) {<br>   // TODO Auto-generated catch block<br>   e.printStackTrace();<br>  }<br>  return a;<br> }</p>
分享到:
评论

相关推荐

    java反射jar包中class,并可进行文件比较

    java反射jar包中class,并可进行文件比较

    Java反射中java.beans包学习总结

    本篇文章通过学习Java反射中java.beans包,吧知识点做了总结,并把相关内容做了关联,对此有需要的朋友可以学习参考下。

    javassist3.19GA.jar

    这些类可以使你在目标类被加载前,轻松的获得它的结构,函数,以及属性。此外,不仅仅是在功能上,甚至在结构上,这些类的执行函数也和反射的API大体相同。比如getName,getSuperclass,getMethods,,getSignature,...

    JAVA_API1.6文档(中文)

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....

    icepdf 5.0.4 pro 包+demo(pdf转png转html)去除水印 带字体引擎

    5.0.4 pro性能比之前的都好,内存占用更少,字库更全面。 试过网络上4.3.2去水印版 ,在文件较大时候都会...demo里通过反射清空了jar包中水印资源类中相关变量值~(当然字都不在了,还有两个标点,几乎看不出来了)

    java api最新7.0

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...

    JDK_1_6 API

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...

    Java 1.6 API 中文 New

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...

    JavaAPI1.6中文chm文档 part1

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....

    java jdk-api-1.6 中文 chmd

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....

    [Java参考文档]

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....

    JavaAPI中文chm文档 part2

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....

    [Java参考文档].JDK_API 1.6

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...

    Hibernate中文API

    所有的持久化类(persistent classes)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。构造器(constructor)的访问级别可以是private,然而当生成运行时代理(runtime proxy)的时候则...

    投票系统 struts2+JFreechart

    3、在MyEclipse中新建一个web项目,把上面解压后的jar文件包复制到你当前项目的/WEB-INF/lib目录下,也可以把本项目lib目录中的所有jar文件复制到你的项目中即可。 4、源代码目录结构及说明 ...

    javaSE代码实例

    13.3.2 编写方法链以及StringBuffer类的重要方法 255 13.4 StringBuilder类 258 13.5 正则表达式 259 13.5.1 正则表达式的基本语法 259 13.5.2 Pattern类简介 262 13.5.3 Matcher类简介 263 13.5.4 ...

Global site tag (gtag.js) - Google Analytics