详解Java读取Jar中资源文件及示例代码
发布时间 - 2026-01-11 02:31:32 点击率:次详解Java读取Jar中资源文件及实现代码

直接上代码,文章的注释部分说的比较清楚,大家可以参考下,
工具类源代码: ResourceLoadFromJarUtil.java
实现代码:
import java.io.IOException;
import java.io.InputStream;
import java.net.JarURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import org.apache.commons.io.IOUtils;
public class ResourceLoadFromJarUtil {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/* 资源文件路径,不能以'/'字符字符开头 */
String resourcePath = "struts-plugin.xml";
/* 获取ClassPath下的所有jar路径 */
String[] cps = System.getProperty("java.class.path").split(";");
/* 读取本地Jar文件 */
for (String cp : cps) {
if (!cp.endsWith(".jar")) {
continue;
}
InputStream in = loadResourceFromJarFile(cp, resourcePath);
if (in != null) {
System.err.println(IOUtils.toString(in));
in.close();
}
}
/* 读取本地Jar文件 */
for (String cp : cps) {
if (!cp.endsWith(".jar")) {
continue;
}
InputStream in = loadResourceFromJarURL(cp, resourcePath);
if (in != null) {
System.err.println(IOUtils.toString(in));
in.close();
}
}
/* 读取网络Jar文件 */
InputStream in = loadResourceFromJarURL(
"http://localhost:8080/SpringStruts2Integration/struts2-spring-plugin-2.3.4.1.jar", resourcePath);
if (in != null) {
System.err.println(IOUtils.toString(in));
in.close();
}
}
/**
* 读取Jar文件中的资源
*
* @param jarPath
* 本地jar文件路径
* @param resPath
* 资源文件所在jar中的路径(不能以'/'字符开头)
* @return 如果资源加载失败,返回null
*/
public static InputStream loadResourceFromJarFile(String jarPath, String resPath) {
if (!jarPath.endsWith(".jar")) {
return null;
}
try {
JarFile jarFile = new JarFile(jarPath);
JarEntry jarEntry = jarFile.getJarEntry(resPath);
if (jarEntry == null) {
return null;
}
return jarFile.getInputStream(jarEntry);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* 读取Jar文件中的资源
*
* @param jarUrl
* 本地jar文件或网络上(ttp://host:port/subpath/jarfile.jar)jar文件路径
* @param resPath
* 资源文件所在jar中的路径(不能以'/'字符开头)
* @return 如果资源加载失败,返回null
*/
public static InputStream loadResourceFromJarURL(String jarUrl, String resPath) {
if (!jarUrl.endsWith(".jar")) {
return null;
}
URL url = null;
if (jarUrl.startsWith("http://")) {
try {
url = new URL("jar:" + jarUrl + "!/");
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
}
} else {
try {
url = new URL("jar:file:/" + jarUrl + "!/");
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
}
}
try {
JarURLConnection jarURLConnection;
jarURLConnection = (JarURLConnection) url.openConnection();
JarFile jarFile = jarURLConnection.getJarFile();
JarEntry jarEntry = jarFile.getJarEntry(resPath);
if (jarEntry == null) {
return null;
}
return jarFile.getInputStream(jarEntry);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
以上就是对java 读取jar资源的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# jar资源
# jar资源文件的读取
# 详解Java无需解压直接读取Zip文件和文件内容
# Java如何不解压读取.zip的文件内容
# 从Java的jar文件中读取数据的方法
# Java实现从jar包中读取指定文件的方法
# java实现读取jar包中配置文件的几种方式
# java读取zip/jar包中文件的几种方式
# 加载
# 如有
# 希望能
# 谢谢大家
# 源代码
# 疑问请
# public
# throws
# args
# param
# IOUtils
# org
# JarFile
# commons
# apache
# static
# xml
# plugin
# ClassPath
# System
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
在centOS 7安装mysql 5.7的详细教程
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
JavaScript如何实现音频处理_Web Audio API如何工作?
大连网站制作公司哪家好一点,大连买房网站哪个好?
JavaScript实现Fly Bird小游戏
如何在搬瓦工VPS快速搭建网站?
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何用搬瓦工VPS快速搭建个人网站?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
如何安全更换建站之星模板并保留数据?
中山网站推广排名,中山信息港登录入口?
在Oracle关闭情况下如何修改spfile的参数
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Python并发异常传播_错误处理解析【教程】
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
在线制作视频网站免费,都有哪些好的动漫网站?
Android GridView 滑动条设置一直显示状态(推荐)
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
专业商城网站制作公司有哪些,pi商城官网是哪个?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
如何在七牛云存储上搭建网站并设置自定义域名?
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何快速完成中国万网建站详细流程?
如何在阿里云购买域名并搭建网站?
Laravel如何配置Horizon来管理队列?(安装和使用)
香港服务器网站推广:SEO优化与外贸独立站搭建策略
如何批量查询域名的建站时间记录?
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
如何在IIS中新建站点并配置端口与IP地址?
使用C语言编写圣诞表白程序
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何用y主机助手快速搭建网站?
php 三元运算符实例详细介绍
怎么用AI帮你设计一套个性化的手机App图标?
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
如何快速上传自定义模板至建站之星?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
LinuxCD持续部署教程_自动发布与回滚机制
Android自定义listview布局实现上拉加载下拉刷新功能
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
企业网站制作这些问题要关注
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
上一篇:宝鸡SEO优化需哪些本地化策略?
下一篇:Linux运维工程师工作内容
上一篇:宝鸡SEO优化需哪些本地化策略?
下一篇:Linux运维工程师工作内容

