SpringBoot项目打成jar包后,无法读取resources下的文件

在Windows环境下,SpringBoot项目能正常读取resources下的文件,但打包为jar并部署到Linux服务器时,文件读取失败。问题在于jar包内文件路径以'jar!filename'形式表示,导致无法直接读取。解决方案是使用`Class.getResourceAsStream()`以流的方式读取文件。此外,探讨了`getResource()`和`getClassLoader().getResource()`在路径前是否加"/"的区别,以及它们与`getResourceAsStream()`的不同。
摘要由CSDN通过智能技术生成

最近在使用aspose将word转PDF并进行签章打印,读取凭证文件时遇到一个问题,凭证文件放在resources目录下,Windows下可正常读取,但是打成jar包部署到Linux服务器上却取不到文件。由此问题引出以下思考:

在本地项目读取文件时

this.getClass().getClassLoader().getResource("").getPath()+fileName

this.getClass().getResource("/filename").getPath()

都是可以成功的;

但是jar打包后上面方式读取文件时 会变成 jar!filename 这样的形式去读取文件,这样是读取不到文件的;

可以使用class.getResourceAsStream("/filename") 以流的形式读取文件,是可以读取的到的;

    private static boolean getLicense() {
        boolean result = false;
        try {
            ClassLoader loader = Thread.currentThread().getContextClassLoader();
            // 凭证文件
            CONFIG_PATH =null;

            //method one(Windows能读到文件,Linux读不到文件)
            URL url = loader.getResource("config/license.xml");
            String filePath = url.getPath();
            logger.info("test-path : "
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值