0 0

java类中如何读取引用jar包中目录中的所有资源文件?20

想在java类中实现读取所引用jar包红某一个目录中的所有资源文件,不知如何去做,在网上找了点资料,都之讲解了单个文件的读取,我也尝试了目录读取但是不成功?

参考地址:http://www.iteye.com/topic/483115
2012年6月20日 16:33

2个答案 按时间排序 按投票排序

0 0

你可以模仿一下,下面的代码

private static List getClassesFromJARFile(String jar, String packageName) throws Error
{
    final List classes = new ArrayList();
    JarInputStream jarFile = null;
    try
    {
        jarFile = new JarInputStream(new FileInputStream(jar));
        JarEntry jarEntry;
        do 
        {       
                try
                {
                        jarEntry = jarFile.getNextJarEntry();
                }
                catch(IOException ioe)
                {
                        throw new CCException.Error("Unable to get next jar entry from jar file '"+jar+"'", ioe);
                }
                if (jarEntry != null) 
                {
                        extractClassFromJar(jar, packageName, classes, jarEntry);
                }
        } while (jarEntry != null);
        closeJarFile(jarFile);
    }
    catch(IOException ioe)
    {
        throw new CCException.Error("Unable to get Jar input stream from '"+jar+"'", ioe);
    }
    finally
    {
        closeJarFile(jarFile);
    }
   return classes;
}
private static void extractClassFromJar(final String jar, final String packageName, final List classes, JarEntry jarEntry) throws Error
{
    String className = jarEntry.getName();
    if (className.endsWith(".class")) 
    {
        className = className.substring(0, className.length() - ".class".length());
        if (className.startsWith(packageName))
        {
                try
                {
                        classes.add(Class.forName(className.replace('/', '.')));
                } catch (ClassNotFoundException cnfe)
                {
                        throw new CCException.Error("unable to find class named " + className.replace('/', '.') + "' within jar '" + jar + "'", cnfe);
                }
        }
    }
}
private static void closeJarFile(final JarInputStream jarFile)
{
    if(jarFile != null) 
    { 
        try
        {
                jarFile.close(); 
        }
        catch(IOException ioe)
        {
                mockAction();
        }
    }
}

2012年6月20日 17:22
0 0

建议使用ant.jar的ZipInputStream
jdk自带的中文有乱码

2012年6月20日 17:19

相关推荐

    jar包中类的加载及jar中资源的使用

    在Java编程环境中,`jar`(Java Archive)文件是一种打包工具,它将多个类文件、资源文件以及其他元数据集合在一起,便于分发和执行。本文将深入探讨`jar`包中类的加载机制以及如何在Java程序中使用`jar`中的资源。 ...

    java 类从哪个jar包加载的

    Java类是从JAR(Java Archive)包中加载的,JAR文件是Java平台特有的归档格式,用于收集多个类文件、相关的元数据和其他资源(如图像文件或配置文件)到一个单一的文件中,方便分发和运行。 首先,我们来理解一下...

    浅谈两个jar包中包含完全相同的包名和类名的加载问题

    了解Jar包中的类加载问题 Java中的类加载机制是指Java虚拟机(JVM)在加载类文件时的相关处理过程。当多个Jar包中包含相同的包名和类名时,可能会出现类加载问题。下面我们来讨论这种情况下的类加载问题。 类加载...

    java几个常用的jar包

    Java开发过程中,jar(Java Archive)包是必不可少的资源,它们包含了预编译的类、接口、资源和其他元数据,方便开发者在项目中引用。在给出的标题和描述中,提到了几个常用的Java jar包,分别是:activation.jar、...

    java常用的jar包集合

    Java开发过程中,jar(Java Archive)包是必不可少的资源,它们包含了预编译的类、接口和相关的元数据,使得开发者可以直接引用而不需构建整个项目。以下是对标题和描述中提及的一些常用Java jar包的详细解释: 1. ...

    JAVA_API1.6文档(中文)

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    android中apk包中的xml文件解密

    1. **反编译**:使用工具如`apktool`可以反编译APK,将dex文件转换回Java源代码,同时也会把资源文件转换回原始格式。这会生成一个解压后的目录结构,其中XML文件以文本形式存在,可直接阅读。 2. **解析资源表**:...

    dom4j从jar包中读取xml文件的方法

    总结起来,DOM4J从JAR包中读取XML文件,主要涉及以下知识点: 1. DOM4J的`SAXReader`类用于解析XML文档。 2. Java的`ClassLoader`用于加载类和资源,特别是JAR包内的资源。 3. `getResource`和`getResourceAsStream`...

    spring boot加载第三方jar包的配置文件的方法

    这个类将绑定到配置文件中的`quartz.config`前缀下的所有属性。 2. **配置文件中添加属性** 在`application.properties`中,我们需要添加相应的配置项,以供`QuartzConfigProperties`类读取。例如: ``` ...

    java ibatis框架 jar包

    iBatis的jar包中包含了所有必要的类和库,使得开发者能够在项目中直接引用,无需关注其内部实现细节。 在iBatis框架中,主要包含以下几个关键组件: 1. **SqlSessionFactory**: 这是iBatis的主要入口点,用于创建...

    Java 1.6 API 中文 New

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    Java动态类加载机制应用研究.pdf

    2. ExtensionClassLoader(扩展类加载器):这种类加载器主要负责加载Java扩展机制(Extension Mechanism)指定目录下的jar包中的类。这些目录是由系统属性java.ext.dirs指定的。ExtensionClassLoader提供了对Java...

    常用jar包大全

    - JAR文件的扩展名为`.jar`,通常包含Java类、资源文件、配置文件以及MANIFEST.MF文件,后者记录了关于JAR的基本信息。 - 使用`jar`命令或工具如Ant、Maven、Gradle可以创建、提取和管理JAR文件。 2. **JAR包的...

    解析apk资源的aar包,并附带关键代码

    而AAR(Android Archive)文件则是Android库项目的一种打包格式,类似于Java的JAR包,但包含了资源文件和AndroidManifest.xml。本话题主要探讨如何解析APK中的资源,以及如何利用AAR包进行辅助解析。 首先,`apk-...

    JavaAPI中文chm文档 part2

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    JAVA-JVM-01类加载机制

    值得注意的是,JAR包中的类并非一次性全部加载,而是按需加载,这提高了程序启动和运行的效率。类加载的完整过程包括以下六个步骤: 1. 加载:当需要使用到类时,如调用main方法或创建对象,类加载器会在硬盘上找到...

    基于适配spring boot工程开发,在以spring boot框架为基础的项目工程中的pom.xml文件引入的工具包

    支持从当前运行的spring boot工程jar包中读取javascript,css文件。支持在请求URL携带字符编码名称获取相应的字符编码格式的js、css文件。支持替换css文件中url引用资源的相对路径为可访问的绝对路径。支持使用yui...

    java类加载知识点整理

    获取方式多种多样,包括但不限于从ZIP文件、网络资源、运行时计算生成、JSP文件甚至数据库中读取。加载过程完成后会在内存中生成一个`Class`对象,作为方法区中该类数据的访问入口。 - **技术衍生**:这一阶段...

    Springboot + Hutool-db 使用 URLClassLoader 动态加载外部数据库和数据池 jar包实例

    这里的数据源配置可以从加载的jar包中读取,例如,通过读取配置文件或者直接在代码中设置连接参数。 5. 通过创建的数据源,你可以进行数据库的连接、查询、事务处理等一系列操作。 `PostmanTest.json`可能是一个...

Global site tag (gtag.js) - Google Analytics