<p>函数背景:希望得到jar包中所有函数和包名,便于在客户端以树型结构展示</p>
<p>public static List<String[]> getJarMethod(String jarFile) throws Exception {<br> String NORMAL_METHOD= "waitequalsnotifynotifyAlltoStringhashCodegetClass"; <br> List<String[]> a = new ArrayList<String[]>();<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") < 0) {<br> String sName = entry.getName();<br> String substr[] = sName.split("/");<br> String pName = "";<br> for (int i = 0; i < substr.length - 1; i++) {<br> if (i > 0)<br> pName = pName + "/" + substr[i];<br> else<br> pName = substr[i];<br> }<br> if (sName.indexOf(".class") < 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<m.length; i++)<br> {<br> String sm = m[i].getName();<br> if (NORMAL_METHOD.indexOf(sm) <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编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。通过反射,我们可以在不知道具体类名的情况下实例化对象,调用方法,访问和修改私有成员,以及...
首先,要实现从本地JAR包中加载类并调用指定方法,需要对Java类加载机制有所了解。Java虚拟机(JVM)在运行Java程序时会加载类文件,这一过程涉及到类加载器(ClassLoader)。类加载器负责从文件系统或网络中加载...
使用这样的jar包时,开发者需要将其添加到项目的类路径中,然后可以通过Java的反射机制或者直接引入相关类来调用接口。在实际使用中,需要注意的问题包括但不限于:错误处理、安全配置(如SSL/TLS)、性能优化(如...
这种方法允许我们在不预先知道具体类和方法名的情况下调用jar包中的功能。 对于第三方包的依赖问题,我们需要确保这些依赖在运行时可以被正确地找到和加载。一种常见的做法是在类路径中包含这些依赖,或者将它们与...
这个技术主要基于Java.lang.reflect包中的类和接口,如Class、Constructor、Method和Field等。在给定的场景中,我们需要实现的功能是遍历指定包路径下的所有类,获取它们的属性信息,包括属性的注解和注释,并以表格...
这种灵活性使得它在实际开发中非常实用,尤其在处理大量数据时,可以避免一次性加载所有数据导致的内存溢出问题。 要使用EasyExcel,你需要引入相应的jar包。在提供的"exceljar"压缩包中,应包含EasyExcel的依赖库...
首先,`Class`对象是反射的基础,每个类在内存中都有一个对应的`Class`对象,通过这个对象我们可以获取到类的所有信息,包括类名、访问修饰符、父类、接口、构造器、方法和字段等。`Class`对象可以通过以下三种方式...
Java反射中java.beans包是一个非常重要的包,提供了许多有用的工具类和接口,帮助我们更好地实现Java对象的反射操作。本篇文章将通过学习Java反射中java.beans包,总结出相关的知识点,并将相关内容进行关联,对此有...
在大型项目中,通常会使用插件架构来实现模块化,每个插件可能包含一组相关的类和资源,封装在一个单独的jar包中。为了实现动态加载,我们需要一个管理插件的框架,它可以监听新插件的添加,使用自定义类加载器加载...
本文将深入探讨Spring框架的核心组件及其在jar包中的体现。 首先,Spring的核心组件包括Spring Core、Spring Beans和Spring Context。Spring Core提供基础的IoC(Inversion of Control)服务,如资源加载、对象创建...
5. **反射机制**:`java.lang.reflect`包中的类,如`Class`、`Method`和`Constructor`,用于在运行时动态访问和修改类的属性和行为。 6. **异常处理**:`java.lang.Throwable`及其子类,如`Exception`和`Error`,...
它们的工作原理是利用反射技术,根据传入的资源名和类型,动态查找并返回对应的资源ID。 ```java public class MResource { public static int getIdByName(Context context, String className, String name) { /...
`spring-core.jar` 提供了 Spring 框架的基础功能,如 IoC 容器的核心类、资源访问和反射工具。它是其他所有 Spring 组件的基础。 `spring-aop.jar` 支持面向切面编程(AOP),允许开发者定义横切关注点,如日志、...
1. **Java标准库**:JAR包中的核心Java类库,包括`rt.jar`,包含了Java标准版(Java SE)的所有API,如`java.lang`、`java.util`、`java.io`等基础类库,这些都是Java程序的基础,用于处理对象创建、集合操作、输入...
而"jquery-jar包"这一概念,可能对于某些开发者来说略显陌生,实际上,它是将jQuery库封装到Java的jar包中,以便于Java后端开发者在服务器端使用jQuery的功能。本文将深入探讨jQuery的核心概念,以及在Java环境中...
`openbean.jar`是一个包含JavaBeans组件的库,特别适用于在Android Studio项目中使用`java.beans`包中的类和接口。`java.beans`包提供了许多用于创建、操作和序列化Java对象的工具,这些工具在桌面应用开发中非常...
这篇文章将向大家分享如何使用 Java 反射机制和第三方工具包 org.reflections 来实现动态获取实现某个接口下所有的实现类对象集合。 首先,为什么我们需要动态获取实现某个接口下所有的实现类对象集合?在实际开发...
这里我们将深入探讨如何实现Java的包扫描以及如何在jar应用中使用这种技术。 首先,让我们了解什么是包扫描。包扫描是一种机制,它允许我们在运行时查找并处理指定包或其子包下的所有类。在Spring框架中,这种机制...
Java的rt.jar是Java运行时库的核心组成部分,它包含了Java标准版(JRE)的类库,涵盖了Java语言的基础类,如Object、String、ArrayList、Thread等,以及I/O流、网络编程、反射、异常处理等多个核心功能的实现。...