在一次项目开发过程中,项目根路径下存放了一张图片,生成二维码的时候调用了该图片作为二维码的logo,在windows环境下二维码可以正常生成,但是部署到生产测试环境之后二维码生成报错,FileNotFoundException     jar包资源路径:/BOOT-INF/classes/**/logo.png

  在生成二维码的过程中使用了IO流中的File进行文件读取代码如下: 

   Resource resource = new ClassPathResource(imgPath);
   File file = resource.getFile();
   if (!file.exists()) {
   System.err.println("" + imgPath + " 该文件不存在!");
   return;
   }
  Image src = ImageIO.read(file);
通过file读取文件的时候再接口调用的时候会使用jar:file//来读取服务器绝对路径下的资源:jar:file//***/logo.png
而此时logo.png文件在linux服务器下的绝对路径是不存在的,所以会报错文件找不到
针对这种情况可以在linux服务器上新建一个相同的路径放入相同的图片也可以解决问题

=================================================================================================

修改后通过inputStream流进行文件读取代码如下:
  
  ClassPathResource resource = new ClassPathResource(imgPath);

  InputStream inputStream = resource.getInputStream();
  Image src = ImageIO.read(inputStream);
通过流读取的时候会去掉文件路径前边的‘/’,转而从相对路径的classpath下边开始找,转成流再进行处理

表面上看是这个样子,具体底层实现涉及到
ClassPathResource,Class等几个jdk自带的类对象,本人水平有限还望各位过路大佬指点...联系邮箱448436255@qq.com

关于springboot项目通过jar包启动之后无法读取项目根路径静态资源的更多相关文章

  1. MyEclipse 引用其他项目及其jar包

    倘若在工作区有两个项目A和B,B项目引用A项目及其jar包(防止调用时A项目的方法出现NoClassFound),步骤如下: 在A项目上点右键看属性,点击Build Path--->Concon ...

  2. [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目

    (1)项目导入JAR包:1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面.2.右键点击项目,Bulid Path->Configure Build Path3.在设置Libraie ...

  3. 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案

    JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...

  4. SpringBoot项目打成jar包后上传文件到服务器 目录与jar包同级问题

    看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你使用Sp ...

  5. 关于IDEA的Maven打jar包springboot项目问题,打成可执行jar包,IDEA创建的maven项目和spring initializr项目

    Spring Initializr创建的项目 源文件地址 https://github.com/TaoPanfeng/maven-package 项目的创建步骤 进行打包 clear package ...

  6. SpringBoot项目打成Jar包时运行

    使用java -jar ***.jar执行jar包的时候,会找jar包中的main()方法. 对于SpringBoot项目的Jar包,在META-INF目录下的MANIFEST.MF文件中,Main- ...

  7. 【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)

    转自:https://www.cnblogs.com/sxdcgaq8080/p/7727249.html   接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p ...

  8. 【spring boot】6.idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到

    接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...

  9. idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到

    接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...

随机推荐

  1. Eureka系列(二) 服务注册Server端具体实现

    服务注册 Server端流程   我们先看下面这张图片,这张图片简单描述了下我们EurekaClient 在调用EurekaServer 提供的服务注册Http接口,Server端实现接口执行的大致流 ...

  2. SQL注入-DNS注入(一)

    这篇文章相对来说比较入门,参考的文章是:https://www.jianshu.com/p/c805209244c2 0x00前言 前段时间在做盲注 分别是基于时间和基于布尔型的 说真的 这两种盲注真 ...

  3. Redis缓存穿透和缓存雪崩的面试题解析

    前段时间去摩拜面试,然后,做笔试的时候,遇到了几道Redis面试题目,今天来做个总结.捋一下思路,顺便温习一下之前的知识,如果对您有帮助,左上角点下关注 ! 谢谢 文章目录 缓存穿透 缓存雪崩 大家都 ...

  4. MySQL索引的使用是怎么样的?5个点轻松掌握!

    一.前言 在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑. 譬如: MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件? MySQL ...

  5. codeforces 1443D,解法简单,思维缜密的动态规划问题

    大家好,欢迎来到codeforces专题. 今天选择的问题是1443场次的D题,这题是全场倒数第三题,截止到现在一共通过了2800余人.这题的思路不算难,但是思考过程非常有趣,这也是这一期选择它的原因 ...

  6. WPF 中的相关样式

    <Image Name="icon" Width="40" Height="40"  Source="/Resources/ ...

  7. ML.net重新训练模型需要注意的事项。

    ml.net是微软机器学习的东西,如果你的需求是需要一个固定的模型来进行操作的话那就按着官网的教程来就可以,但是大部分的模型可能不满足现有的需求,那么我们需要对模型进行重新训练. 重新训练模型有限制条 ...

  8. SonarQube学习(一)- 使用Docker安装SonarQube(亲测可用)

    一.前言 不得不吐槽下,现在的博客写的真太扯淡了,就网上写的使用docker安装SonarQube而言,搜到十篇文章,最少9篇照着操作配置都不可用,卡在SonarQube无法启动.自然,我也是被折磨的 ...

  9. qt界面设计

    需求 需要不同界面同样的位置有上下的公共部分 分解 在WPF中我亦接触到需要这样做的程序.在wpf中我将上下公共部分作为界面基类,其它界面都继承这个基类.我用qt准备定义一个stackedpanel, ...

  10. springboot项目配置数据库

    在pom.xml文件中配置 <!-- mybatis整合springboot起步依赖--> <dependency> <groupId>org.mybatis.sp ...