Java项目打jar包后相对路径问题

Java项目打jar包后相对路径问题

问题描述

有一个项目项目名为Project,要将其打包为Project_jar,这个项目中一个res的资源文件夹,其下有pack1,pack2,pack3等三个包,但在打包后发现jar包中并没有res目录,而是直接把三个包放到了Project_jar中,这时若直接使用相对路径访问资源文件会出现问题

解决方案

使用类加载器获取资源流,并使用输入流去访问资源文件。该方法能获取在 bin 目录下的任意资源文件

示例代码

String filePath_relative = "pack1/file.txt";  // 资源文件路径需要为 bin 目录下的相对路径
InputStream inputStream = [MyClass].class.getClassLoader().getResourceAsStream(filePath_relative);
try(BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {  // 文件读取器
			
	String str_line = "";  // 行数据
	while(reader.ready()) {
		str_line = reader.readLine();  // 按行读取
	}
} catch (Exception e) {
	// TODO: handle exception
	System.out.println("找不到文件:" + filePath_relative );
}

Ps:附上获取jar包路径的方式

try {
	jarFilePath = URLDecoder.decode([MyClass].class.getProtectionDomain()
			.getCodeSource().getLocation().getFile(), "UTF-8");
} catch (Exception e) {
	// TODO: handle exception
}

上述代码中的 [MyClass] 需要修改为自己的当前类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值