java获取jar文件路径问题_关于jar读取文件路径问题

本文讲述了在将Java项目打包成jar文件后,如何正确读取jar内部资源文件的问题。通过分析`Class.getResource()`和`ClassLoader.getResource()`的区别,解释了在jar环境下,使用`getResource()`和`getResourceAsStream()`方法读取相对路径和绝对路径的资源文件的正确方式。
摘要由CSDN通过智能技术生成

关于jar读取文件路径的这个问题可愁死我了!

(以下内容如有不准确,或错误的地方请留言.我会积极配合领导去查证并更正我的错误.)

先看项目树:(对应项目Open in Terminal    —   tree >>E:\tree.txt)

E:.

└─src

└─main

├─java

│ └─com

│ └─ycc

│ └─netty

│ ├─bean

│ ├─constant

│ └─util

└─resources

当我想把项目打成jar包并发布到服务器上的时候,它总是这样亲切的对我说:

An exception java.lang.IllegalArgumentException: bound must be positive

我苦思冥想,然后…….我就去google了…….

最终以这种方式解决了问题:

NameUtil.class.getClassLoader().getResourceAsStream(“surname.json”);

究其原因,其实是这个样子(…)

打包之后,jar包中的所加载的文件路径发生了变化,我们在把 ~.*(例如:test.json)打包到C盘之后,其路径变为file:/C:/*.jar!/~.*,如果你在原项目中使用new File(filePath)之类的方法来加载的话,肯定会找不到资源文件。主要是因为Jar包是一个单独的文件而非文件夹,绝对不可能通过file:/C:/.../*.jar!/~.*这种形式的文件URL来定位~.*。所以即使是相对路径,也无法定位到Jar包内的资源文件。

这个时候我们需要使用到getResource()和getResourceAsStream();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值