【java】ClassLoader.getResources加载资源
目录
- 前言
- 代码说明
- 目录结构
- FromMultiJar/pom.xml
- 代码
- 编译后目录结构
- 启动命令
- 执行结果
前言
- maven多模块项目
代码说明
目录结构
LoadResources
├─FromMultiJar
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ └─test
│ │ └─resources
│ │ └─a.txt
│ pom.xml
├─WebJar1
│ └─src
│ └─main
│ ├─java
│ └─resources
│ └─a.txt
└─WebJar2└─src└─main├─java└─resources└─a.txt
FromMultiJar/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>test</groupId><artifactId>FromMultiJar</artifactId><packaging>jar</packaging><properties></properties><dependencies><dependency><groupId>test</groupId><artifactId>WebJar1</artifactId><version>1.0</version></dependency><dependency><groupId>test</groupId><artifactId>WebJar2</artifactId><version>1.0</version></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.6</version><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>test.Test</mainClass></manifest></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin></plugins></build>
</project>
代码
代码在FromMultiJar子模块的src/main/java目录下
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.Enumeration;public class Test {public static void main(String[] args) throws UnsupportedEncodingException, IOException {ClassLoader classLoader = TestC.class.getClassLoader();String fileName = "a.txt";/* 获取资源文件 */System.out.println("-------------选中的资源文件--------------");URL url = classLoader.getResource(fileName);PrintUtil.print(url);/* 打印资源文件内容 */System.out.println("-------------资源文件内容--------------");try (LineNumberReader lnr = new LineNumberReader(new InputStreamReader(classLoader.getResourceAsStream(fileName), "utf-8"))) {for (String str = lnr.readLine(); null != str; str = lnr.readLine()) {System.out.println(str);}}/* 获取资源文件列表 */System.out.println("-------------所有符合条件的资源文件列表--------------");Enumeration<URL> urls = classLoader.getResources(fileName);while (urls.hasMoreElements()) {PrintUtil.print(urls.nextElement());}}
}
编译后目录结构
D:/LoadResources
├─FromMultiJar.jar
└─lib├─WebJar1.jar└─WebJar2.jar
启动命令
java -jar FromMultiJar.jar
执行结果
-------------选中的资源文件--------------
resource url : file:/D:/LoadResources/FromMultiJar.jar!/a.txt
-------------资源文件内容--------------
file in src/main/resources
-------------所有符合条件的资源文件列表--------------
resource url : file:/D:/LoadResources/FromMultiJar.jar!/a.txt
resource url : file:/D:/LoadResources/lib/WebJar1-1.0.jar!/a.txt
resource url : file:/D:/LoadResources/lib/WebJar2-1.0.jar!/a.txt
【java】ClassLoader.getResources加载资源相关推荐
- 【java】ClassLoader.getResources加载资源的顺序
目录 前言 代码说明 目录结构 FromMultiJar/pom.xml 代码 编译后目录结构 启动命令 ClassLoader.getResources加载资源的顺序 先在本应用(FromMulti ...
- Java是如何加载资源文件的?(源码解毒)
上文提到应老板要求开发一个测试工具能方便的加载存于文件中的测试参数,当时考虑既然是测试,把测试参数文件和测试类放在一起岂不是很方便,但是老板说:我的需求是你把测试参数文件放到统一文件夹下比如resou ...
- getimg()在java中,java – 使用getClass()加载资源getResource()
我正在尝试加载一个图像作为我的应用程序中的一个图标.根据这个 tutorial的适当方法是: protected ImageIcon createImageIcon(String path, Stri ...
- java 根据类名示例化类_如何使用示例从Java中的类路径加载资源
java 根据类名示例化类 Java中的类路径不仅用于加载.class文件,而且还可以用于加载资源,例如属性文件,图像,图标,缩略图或任何二进制内容. Java提供了API来将这些资源读取为Input ...
- 如何使用示例从Java中的类路径加载资源
Java中的类路径不仅用于加载.class文件,而且还可以用于加载资源,例如属性文件,图像,图标,缩略图或任何二进制内容. Java提供了API来将这些资源读取为InputStream或URL. 假设 ...
- java加载资源文件的3种方式
使用绝对路径加载(不推荐) 直接写死路径,使用FileInputStream加载资源文件,但是路径就不能动了 public static void main(String[] args) throws ...
- 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析
前言 package com.jvm.classloader;class Father2{public static String strFather="HelloJVM_Father&qu ...
- java中类的加载顺序介绍(ClassLoader)
1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题.对于这个异常,它实质涉 ...
- java类加载加载资源的方式以及加载资源失败问题
加载资源的方式 1 正常的文件读取File 2 类加载器 重点说类加载器 如上图的包资源com.lsl.mybatis.io.resources.propeties 2.1 Clas.clss ...
最新文章
- 关于TxQBService报的错,腾讯你真牛B啊
- Web项目性能优化之减少HTTP请求次数优化
- x86 的 TSS 任务切换机制
- 我的第一本算法书(图解算法)——什么是堆
- Camera2点击对焦实现
- Vissim 基础教程和技巧
- 查询计算机端口状态是否开启,如何查看自己的电脑3389端口是否是处于开启状态?...
- (软件测试)代码覆盖(语句覆盖,分支覆盖,条件覆盖,条件组合覆盖,路径覆盖)
- java创建临时文件夹_Java 创建文件、文件夹以及临时文件
- 《孤独的青春创造不孤独的人生》
- 做中台,我从一名产品经理做成了合伙人
- PaMIR: Parametric Model-Conditioned Implicit Representation for Image-based Human Reconstruction
- linux ubuntu实验
- /*	题目: * 打印出所有的	 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和	 	等于该数本身。 	例如:	 	153 是一个 水仙花数
- 淘宝内容场下的人物理解系统
- Python游戏制作(一)
- Python :销售提成
- iTouch3-32G升级4.2.1并越狱
- JavaEE 项目常见错误汇总
- 基于ZigBee的智能公交报站系统
热门文章
- 购买嵌入式摄像头的一些小问题
- 拿到企鹅offer的学弟来报喜了!
- incsgo 能取回皮肤的CSGO饰品皮肤开箱网
- java连接池 dbcp 样例_DBCP数据库连接池的简单使用
- 计算1+1/2+1/3+…+1/20。
- node:internal/modules/cjs/loader:988 报错解决方法
- JAVA 基础 / 第二十八课:接口与继承 / 如何设计JAVA的接口?
- MAYA和3DMAX,应该选择哪个呢?
- 低端BLE蓝牙集成32-bit MCU BLE5.2+2.4G芯片 适合低成本蓝牙遥控器
- 【C语言】图书管理系统