当前位置:   article > 正文

war或jar使用Resource或ClassPathResource加载classpath下文件失败_war保 classpathresource

war保 classpathresource

代码:

  1. String path = "cerm/CA_CA_0_usr_0.der";
  2. File file = new DefaultResourceLoader().getResource(path).getFile();
  3. byte[] bytes = FileUtils.readFileToByteArray(file);
  4. System.out.println(Base64.getEncoder().encodeToString(bytes));

异常:

 cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/opt/d_g.war!/WEB-INF/classes!/cerm/CA_CA_0_usr_0.der

使用idea测试时,未打包时可以获取到文件,打包后报错。

解决:

  1. String path = "cerm/CA_CA_0_usr_0.der";
  2. InputStream inputStream = new DefaultResourceLoader().getResource(path).getInputStream();
  3. //InputStream转为byte[]
  4. byte[] bytes = inputStream2Bytes(inputStream);
  5. System.out.println(Base64.getEncoder().encodeToString(bytes));

说明:

这是因为打包后Spring试图访问文件系统路径,但无法访问JAR中的路径。因此必须使用getInputStream()。

并且使用ClassPathResource亦同理。

详情请参考:Java: Load file from classpath in Spring Boot - smarterco.de

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/815933
推荐阅读
相关标签
  

闽ICP备14008679号