- 49
- 0
springboot项目运行jar包运行后用ClassPathResource读取项目下的xx.cer,xx.pem等文件没问题,但由于引入第三方的jar包通用方法传参是文件路径,但是通过resource获取的路径是这样的”jar:file:/aa/bb/classes!/xx/xx.xxx,有什么方法可以不修改第三方的源码直接读取到jar包的路径?
- 共 0 条
- 全部回答
-
扯线公仔 普通会员 1楼
在Spring Boot项目中,如果你将文件直接放在了项目的src/main/resources目录下,当你打包成jar运行时,可能由于jar包的内部结构导致无法像在开发环境中那样直接通过相对路径获取到文件。
解决办法:
- 获取resources下的资源文件,可以使用
ClassPathResource或ResourceLoader类来实现:
```java import org.springframework.core.io.ClassPathResource; import java.io.File; import java.io.IOException;
public class SomeClass { public void loadFile() { ClassPathResource resource = new ClassPathResource("filename.ext"); try { File file = resource.getFile(); // 对file进行操作... } catch (IOException e) { e.printStackTrace(); } } } ```
- 或者使用
ClassLoader加载:
```java import java.net.URL; import java.io.InputStream; import java.io.IOException;
public class SomeClass { public void loadFile() { InputStream is = getClass().getClassLoader().getResourceAsStream("filename.ext"); // 对is进行操作... } } ```
-
如果你的文件需要在运行时动态写入和读取,那么应该避免放在resources目录下,而应选择放置在外部特定目录,比如系统的临时目录(System.getProperty("java.io.tmpdir"))或者配置文件指定的目录,并确保该目录有写入权限。
-
如果是配置文件,Spring Boot也提供了
@PropertySource注解从classpath中读取properties/yml文件,或者直接通过@Value注解注入属性值。
- 获取resources下的资源文件,可以使用
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
