-
java类中如何读取引用jar包中目录中的所有资源文件?20
想在java类中实现读取所引用jar包红某一个目录中的所有资源文件,不知如何去做,在网上找了点资料,都之讲解了单个文件的读取,我也尝试了目录读取但是不成功?
参考地址:http://www.iteye.com/topic/483115
2012年6月20日 16:33
2个答案 按时间排序 按投票排序
-
你可以模仿一下,下面的代码
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
相关推荐
在Java编程环境中,`jar`(Java Archive)文件是一种打包工具,它将多个类文件、资源文件以及其他元数据集合在一起,便于分发和执行。本文将深入探讨`jar`包中类的加载机制以及如何在Java程序中使用`jar`中的资源。 ...
Java类是从JAR(Java Archive)包中加载的,JAR文件是Java平台特有的归档格式,用于收集多个类文件、相关的元数据和其他资源(如图像文件或配置文件)到一个单一的文件中,方便分发和运行。 首先,我们来理解一下...
了解Jar包中的类加载问题 Java中的类加载机制是指Java虚拟机(JVM)在加载类文件时的相关处理过程。当多个Jar包中包含相同的包名和类名时,可能会出现类加载问题。下面我们来讨论这种情况下的类加载问题。 类加载...
Java开发过程中,jar(Java Archive)包是必不可少的资源,它们包含了预编译的类、接口、资源和其他元数据,方便开发者在项目中引用。在给出的标题和描述中,提到了几个常用的Java jar包,分别是:activation.jar、...
Java开发过程中,jar(Java Archive)包是必不可少的资源,它们包含了预编译的类、接口和相关的元数据,使得开发者可以直接引用而不需构建整个项目。以下是对标题和描述中提及的一些常用Java jar包的详细解释: 1. ...
java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...
1. **反编译**:使用工具如`apktool`可以反编译APK,将dex文件转换回Java源代码,同时也会把资源文件转换回原始格式。这会生成一个解压后的目录结构,其中XML文件以文本形式存在,可直接阅读。 2. **解析资源表**:...
总结起来,DOM4J从JAR包中读取XML文件,主要涉及以下知识点: 1. DOM4J的`SAXReader`类用于解析XML文档。 2. Java的`ClassLoader`用于加载类和资源,特别是JAR包内的资源。 3. `getResource`和`getResourceAsStream`...
这个类将绑定到配置文件中的`quartz.config`前缀下的所有属性。 2. **配置文件中添加属性** 在`application.properties`中,我们需要添加相应的配置项,以供`QuartzConfigProperties`类读取。例如: ``` ...
iBatis的jar包中包含了所有必要的类和库,使得开发者能够在项目中直接引用,无需关注其内部实现细节。 在iBatis框架中,主要包含以下几个关键组件: 1. **SqlSessionFactory**: 这是iBatis的主要入口点,用于创建...
java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...
2. ExtensionClassLoader(扩展类加载器):这种类加载器主要负责加载Java扩展机制(Extension Mechanism)指定目录下的jar包中的类。这些目录是由系统属性java.ext.dirs指定的。ExtensionClassLoader提供了对Java...
- JAR文件的扩展名为`.jar`,通常包含Java类、资源文件、配置文件以及MANIFEST.MF文件,后者记录了关于JAR的基本信息。 - 使用`jar`命令或工具如Ant、Maven、Gradle可以创建、提取和管理JAR文件。 2. **JAR包的...
而AAR(Android Archive)文件则是Android库项目的一种打包格式,类似于Java的JAR包,但包含了资源文件和AndroidManifest.xml。本话题主要探讨如何解析APK中的资源,以及如何利用AAR包进行辅助解析。 首先,`apk-...
java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...
值得注意的是,JAR包中的类并非一次性全部加载,而是按需加载,这提高了程序启动和运行的效率。类加载的完整过程包括以下六个步骤: 1. 加载:当需要使用到类时,如调用main方法或创建对象,类加载器会在硬盘上找到...
支持从当前运行的spring boot工程jar包中读取javascript,css文件。支持在请求URL携带字符编码名称获取相应的字符编码格式的js、css文件。支持替换css文件中url引用资源的相对路径为可访问的绝对路径。支持使用yui...
获取方式多种多样,包括但不限于从ZIP文件、网络资源、运行时计算生成、JSP文件甚至数据库中读取。加载过程完成后会在内存中生成一个`Class`对象,作为方法区中该类数据的访问入口。 - **技术衍生**:这一阶段...
这里的数据源配置可以从加载的jar包中读取,例如,通过读取配置文件或者直接在代码中设置连接参数。 5. 通过创建的数据源,你可以进行数据库的连接、查询、事务处理等一系列操作。 `PostmanTest.json`可能是一个...