`
linkyou66
  • 浏览: 234913 次
  • 性别: 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,并可进行文件比较

    用反射解析jar文件并执行里面Java代码

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。通过反射,我们可以在不知道具体类名的情况下实例化对象,调用方法,访问和修改私有成员,以及...

    本地jar包,上传直接调用里面方法

    首先,要实现从本地JAR包中加载类并调用指定方法,需要对Java类加载机制有所了解。Java虚拟机(JVM)在运行Java程序时会加载类文件,这一过程涉及到类加载器(ClassLoader)。类加载器负责从文件系统或网络中加载...

    接口调用jar包

    使用这样的jar包时,开发者需要将其添加到项目的类路径中,然后可以通过Java的反射机制或者直接引入相关类来调用接口。在实际使用中,需要注意的问题包括但不限于:错误处理、安全配置(如SSL/TLS)、性能优化(如...

    动态加载jar包

    这种方法允许我们在不预先知道具体类和方法名的情况下调用jar包中的功能。 对于第三方包的依赖问题,我们需要确保这些依赖在运行时可以被正确地找到和加载。一种常见的做法是在类路径中包含这些依赖,或者将它们与...

    通过java的反射技术获取,某个包路径下的类,并以表格形式打印类的属性注解注释及属性名称等

    这个技术主要基于Java.lang.reflect包中的类和接口,如Class、Constructor、Method和Field等。在给定的场景中,我们需要实现的功能是遍历指定包路径下的所有类,获取它们的属性信息,包括属性的注解和注释,并以表格...

    EasyExcel使用的相关的jar包

    这种灵活性使得它在实际开发中非常实用,尤其在处理大量数据时,可以避免一次性加载所有数据导致的内存溢出问题。 要使用EasyExcel,你需要引入相应的jar包。在提供的"exceljar"压缩包中,应包含EasyExcel的依赖库...

    Java反射机制测试Demo

    首先,`Class`对象是反射的基础,每个类在内存中都有一个对应的`Class`对象,通过这个对象我们可以获取到类的所有信息,包括类名、访问修饰符、父类、接口、构造器、方法和字段等。`Class`对象可以通过以下三种方式...

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

    Java反射中java.beans包是一个非常重要的包,提供了许多有用的工具类和接口,帮助我们更好地实现Java对象的反射操作。本篇文章将通过学习Java反射中java.beans包,总结出相关的知识点,并将相关内容进行关联,对此有...

    java 动态加载jar包

    在大型项目中,通常会使用插件架构来实现模块化,每个插件可能包含一组相关的类和资源,封装在一个单独的jar包中。为了实现动态加载,我们需要一个管理插件的框架,它可以监听新插件的添加,使用自定义类加载器加载...

    spring jar包

    本文将深入探讨Spring框架的核心组件及其在jar包中的体现。 首先,Spring的核心组件包括Spring Core、Spring Beans和Spring Context。Spring Core提供基础的IoC(Inversion of Control)服务,如资源加载、对象创建...

    jdk1.8 rt.jar 源码

    5. **反射机制**:`java.lang.reflect`包中的类,如`Class`、`Method`和`Constructor`,用于在运行时动态访问和修改类的属性和行为。 6. **异常处理**:`java.lang.Throwable`及其子类,如`Exception`和`Error`,...

    Android将Activity打成jar包供第三方调用

    它们的工作原理是利用反射技术,根据传入的资源名和类型,动态查找并返回对应的资源ID。 ```java public class MResource { public static int getIdByName(Context context, String className, String name) { /...

    springMVC的jar包

    `spring-core.jar` 提供了 Spring 框架的基础功能,如 IoC 容器的核心类、资源访问和反射工具。它是其他所有 Spring 组件的基础。 `spring-aop.jar` 支持面向切面编程(AOP),允许开发者定义横切关注点,如日志、...

    java初学或者高级开发JAR包全必备

    1. **Java标准库**:JAR包中的核心Java类库,包括`rt.jar`,包含了Java标准版(Java SE)的所有API,如`java.lang`、`java.util`、`java.io`等基础类库,这些都是Java程序的基础,用于处理对象创建、集合操作、输入...

    jquery-jar包

    而"jquery-jar包"这一概念,可能对于某些开发者来说略显陌生,实际上,它是将jQuery库封装到Java的jar包中,以便于Java后端开发者在服务器端使用jQuery的功能。本文将深入探讨jQuery的核心概念,以及在Java环境中...

    openbean.jar AndroidStudio 导入java.beans.*

    `openbean.jar`是一个包含JavaBeans组件的库,特别适用于在Android Studio项目中使用`java.beans`包中的类和接口。`java.beans`包提供了许多用于创建、操作和序列化Java对象的工具,这些工具在桌面应用开发中非常...

    Java动态获取实现某个接口下所有的实现类对象集合

    这篇文章将向大家分享如何使用 Java 反射机制和第三方工具包 org.reflections 来实现动态获取实现某个接口下所有的实现类对象集合。 首先,为什么我们需要动态获取实现某个接口下所有的实现类对象集合?在实际开发...

    Java的包扫描实现和Jar应用.docx

    这里我们将深入探讨如何实现Java的包扫描以及如何在jar应用中使用这种技术。 首先,让我们了解什么是包扫描。包扫描是一种机制,它允许我们在运行时查找并处理指定包或其子包下的所有类。在Spring框架中,这种机制...

    Java rt.jar 源码分析

    Java的rt.jar是Java运行时库的核心组成部分,它包含了Java标准版(JRE)的类库,涵盖了Java语言的基础类,如Object、String、ArrayList、Thread等,以及I/O流、网络编程、反射、异常处理等多个核心功能的实现。...

Global site tag (gtag.js) - Google Analytics