SpringBoot以Jar包部署Linux后访问不到jar包外部的资源

本文介绍了如何在SpringBoot项目中,针对jar包部署于Linux环境时,配置静态资源(如图片)的外部路径。通过自定义WebMvcConfigurer,使用addResourceHandlers添加资源映射,实现Linux下的路径适配。同时强调了路径分隔符在不同操作系统中的差异,并给出了具体的Linux路径配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目涉及到了大量图片资源,即图片上传功能,总不能上传图片至Jar包内部吧,所以需要在jar包外设置资源路径来保存图片及其他资源。

对于其他框架我们一般使用war包部署到tomcat下,很方便就可以设置资源路径。

而SpringBoot项目自身集成tomcat,如果你真的向我一样作🧨,咱就想使用Jar包部署那就需要进行一些小小的配置。

其实也无非就是添加一个静态资源映射addResourceHandlers,新建一个类继承自WebMvcConfigurer

需要注意的是:

  • Window上的路径以" \ "来分隔
  • Linux中是以" / "来分隔的
  • 所以对于项目中有路径配置的地方都需要更改!(如图片上传路径、图片获取的路径)
@Configuration
public class MallWebMvcConfigurer implements WebMvcConfigurer {

    public void addInterceptors(InterceptorRegistry registry) {
        // 这里通常配置项目的拦截器操作
    }

    /**
     * 添加虚拟目录👇👇👇这里就是我们解决问题的重点了
     * 静态资源映射
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        //registry.addResourceHandler("/upload/**").addResourceLocations("file:" + Constants.FILE_UPLOAD_PATH);
        //registry.addResourceHandler("/goods-img/**").addResourceLocations("file:" + Constants.FILE_UPLOAD_PATH);

        //================上面是Window上的路径配置
        //================下面是Linux上的路径配置
        File path = null;
        try {
            path = new File(ResourceUtils.getURL("classpath:").getPath());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String gitPath = path.getParentFile().getParentFile().getParent() + File.separator + "myresource" + File.separator + "upload" + File.separator;
        //上面gitpath其实是对文件路径做了一个拼接,File.separator根据系统自动获取路径是反斜杠还是正斜杠
        //classpath:后面的路径就是你资源文件的绝对路径了,注意路径末尾也还有一个斜杠
        registry.addResourceHandler("/upload/**").addResourceLocations(gitPath);
        //上面等同于:registry.addResourceHandler("/upload/**").addResourceLocations("classpath:/home/shiers/project/jvshijimall/project/myresource/upload/");
        WebMvcConfigurer.super.addResourceHandlers(registry);

    }
}

然后记得在Linux中创建你的资源文件夹,将资源存进去就可以了

👇这是我的jar包和资源文件路径

最后将项目运行通过     你的域名/upload/xxxx.jpg   就可以远程访问文件中的图片了

 

其他问题可以查看👉SpringBoot项目Jar包部署至Linux上遇到的问题

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值