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

jar包读取例子

DOS 
阅读更多
    首先,当知道当前需要的类所在的包地址,例如:/com/zhouxf/jarread/dos/impl 这样一个目录,当项目被打包成test.jar ,你如何获取到这个包地址下的所有的class文件呢。
   一般要获取都是在某一个类里面,例如factory或者相关的manager里面。在相对的目录中获取所需要的class文件,并且实例化这些class的过程。
   例子如下:

   首先定义一个球的接口:
public interface Ball {

    /**
     * 输出球类型
     */
    void getName();
}

然后实现接口
public class BasketBall implements Ball {

    public void getName() {
        // TODO Auto-generated method stub
        System.out.println("BasketBall.........");
    }

}

public class FootBall implements Ball {

    public void getName() {
        // TODO Auto-generated method stub
        System.out.println("FootBall.........");
    }
}


然后打包代码test.jar, 把他导入到工程。

下面写一个类来读取jar包;

/**
 * 读取类,然后输出相关信息
 * 
 * @author xiaofeng.zhouxf
 */
public class JarReader {

    private Map          map;
    private final String pointClass    = ".class";
    private final String slash         = "/";
    private final String point         = ".";
    private final String javaSeparator = "\\\\";
    private final String packagePath   = "/com/zhouxf/jarread/dos/impl";
    private final String jarName       = "test.jar";                     ;

    public void test() throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {

        // 用来存放包下class文件
        map = new HashMap();
        // 取得资源所在目录
        URL url = this.getClass().getResource(packagePath);
        String resourcePath = url.getFile(); 
        resourcePath = resourcePath.substring(1); 
        int index = resourcePath.indexOf(packagePath);
        String diskPath = resourcePath.substring(0, index);

        resourcePath = resourcePath.replace(slash, javaSeparator);
        diskPath = diskPath.replace(slash, javaSeparator);
        // 取得jar包对象
        JarFile file = new JarFile((diskPath + javaSeparator + jarName));
        // 判断和获取jar包中的entry
        Enumeration<JarEntry> entries = file.entries();
        while (entries.hasMoreElements()) {
            JarEntry entry = entries.nextElement();
            String entryName = entry.getName();
            // System.out.println("entryName:" + entryName);
            if (entryName.indexOf(packagePath.substring(1)) != -1) {
                String classPath = entryName.substring(0, entryName.indexOf(pointClass)).replace(slash, point); 
                Ball ball = (Ball) Class.forName(classPath).newInstance();
                ball.getName();
            }
        }
    }

    public static void main(String... strings) {
        JarReader reader = new JarReader();
        try {
            reader.test();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}


这样,就能打印出

BasketBall.........
FootBall.........


分享到:
评论

相关推荐

    poi读取Exceljar包和例子

    poi读取Exceljar包和例子 poi-2.5.1-final-20040804.jar poi-contrib-2.5.1-final-20040804.jar poi-scratchpad-2.5.1-final-20040804.jar ReadXL.java

    java导出excel的jar包及例子代码

    在这个压缩包中,你应该能找到Apache POI的相关jar包,比如poi-ooxml-schemas、poi-ooxml、poi等。将这些jar包添加到你的项目类路径中,你可以通过Maven或Gradle来管理这些依赖。 以下是一个简单的Java导出Excel的...

    jar包里读取图片.rar ,,自己写的例子

    要运行这个例子,你需要使用Java命令行,指定`b1.jar`作为主类入口的JAR文件,并且如果需要,可以设置额外的类路径参数。 总结来说,从JAR包中读取图片涉及对Java类路径的理解,以及正确使用`getResource()`或`...

    pio的jar包使用例子,有详细注释一看就懂

    【标题】:“pio的jar包使用例子,有详细注释一看就懂” PIO,全称为“Processing IO”,是一个用于处理各种文件格式,尤其是Microsoft Office格式(如Excel、Word和PowerPoint)的Java库。这个标题指出我们将探讨...

    java读取firebird数据库例子+jar包

    在本例中,我们关注的是如何使用Java通过Jaybird驱动读取Firebird数据库,以及涉及的三个jar包——jaybird-2.1.6.jar、jaybird-full-2.1.6.jar和jaybird-pool-2.1.6.jar。 1. **Jaybird驱动**:Jaybird是Java对...

    Zxing Jar包 使用例子

    这个"Zxing Jar包使用例子"旨在帮助开发者更好地理解和应用Zxing库,特别是通过jar包的形式。以下是对Zxing库及其使用方法的详细解释。 Zxing,全称“Zebra Crossing”,是一个用Java编写、跨平台的二维码和条形码...

    JAVA二维码jar包与例子

    在Java中处理二维码,通常需要依赖相关的库或者jar包,例如这个压缩包中的"QRCodeDecoder"可能就是一个用于解码二维码的库。 这个"QRCodeDecoder" jar包可能是实现了二维码解码功能的Java类库,它可以解析二维码...

    xuggle学习官方例子,包含jar包

    在描述中提到的"jar包",包含了Xuggle的库文件,这些文件包含了Xuggle所有功能的实现,开发者可以通过导入这些jar包到项目中,直接调用相关的类和方法进行多媒体处理。例如,`com.xuggle.mediatool.IMediaReader`和`...

    jxl.jar包最新jar包亲测可用

    《使用jxl.jar包在Java中操作Excel文件的详尽指南》 在Java开发中,与Excel文件交互是一项常见的任务,比如数据导入、导出、分析等。jxl.jar库提供了一个强大的解决方案,使得开发者无需依赖Windows环境即可处理...

    java 读取 Execl 文件内容例子和jar包

    * 导入的jar包 * * poi-3.8-beta3-20110606.jar * * poi-ooxml-3.8-beta3-20110606.jar * * poi-examples-3.8-beta3-20110606.jar * * poi-excelant-3.8-beta3-20110606.jar * * poi-ooxml-schemas-...

    Java读取Excel所需jar包 (poi.jar等)

    本篇文章将详细探讨使用Apache POI读取Excel文件所需的jar包,以及如何在Java项目中集成和使用这些库。 首先,Apache POI的核心jar包是poi-ooxml-schemas和poi-ooxml。这两个jar包提供了对Excel文件的XML Schema...

    easyExcel的相关jar包.rar

    创建一个简单的读取Excel的例子,首先需要创建一个实体类,该类的属性对应Excel中的列,然后定义一个监听器,处理读取到的数据。最后,使用`EasyExcel.read()`方法读取Excel文件,传入文件路径和监听器即可。 4. *...

    poi word转html例子及jar包

    本篇将详细讲解如何使用Apache POI将Word文档转换为HTML格式,并介绍相关的代码示例和所需jar包。 首先,为了进行Word到HTML的转换,你需要在项目中引入Apache POI的相关jar包。这通常包括`poi-ooxml-full.jar`,它...

    informix数据库连接驱动jar包

    4. ifxlsupp.jar:此jar文件提供了对Excel文件的支持,可能包含一些用于读取或写入Excel格式数据的工具和类。这对于需要在Informix数据库与Excel电子表格之间进行数据交换的应用程序非常有用。 5. ifxsqlj.jar:这...

    KETTLE常用数据库的JAR包

    导入此JAR包后,Kettle能够读取、写入或操作MySQL数据库中的数据,支持各种数据提取和加载任务。 其次,`oracle` JAR包是Oracle数据库的JDBC驱动程序,它使得Kettle能够与Oracle数据库进行交互。Oracle JDBC驱动...

    java读取csv例子

    Java读取CSV例子是通过使用javacsv-2.0.jar包来实现的。javacsv-2.0.jar包提供了CsvReader和CsvWriter两个类,分别用于读取和写入CSV文件。在本例子中,我们将展示如何使用javacsv-2.0.jar包来读取和写入CSV文件。 ...

    fastJson依赖jar包

    这个"fastJson依赖jar包"正是包含了Fastjson库的Java类库文件,供开发者在项目中引用使用。 Fastjson的核心功能包括以下几点: 1. **JSON解析与生成**:Fastjson提供了便捷的API,可以将JSON字符串解析成Java对象...

    jxl实现excel的读取和写入 jar包

    标题"jxl实现excel的读取和写入 jar包"和描述"jxl实现excel的读取和写入 jar包,jxl实现excel的读取和写入 jar包"提及的是一个使用Java库jxl来处理Excel文件的场景。jxl是一个开源的Java库,专门用于读取和写入...

    storm开发jar包以及storm例子源码

    标题中的"storm开发jar包以及storm例子源码"表明了我们即将探讨的是关于Apache Storm的开发环境设置和示例代码。Apache Storm是一个开源的分布式实时计算系统,它允许开发者处理无限的数据流,常用于大数据实时处理...

    netty5.0 jar包和例子

    在本文中,我们将深入探讨Netty 5.0版本的关键特性、使用场景以及如何通过提供的jar包和示例进行学习。 首先,让我们了解一下Netty 5.0的核心特性: 1. **异步非阻塞I/O**: Netty基于Java NIO(非阻塞I/O)库构建...

Global site tag (gtag.js) - Google Analytics