jar包获取resource下配置文件路径

这篇具有很好参考价值的文章主要介绍了jar包获取resource下配置文件路径。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在代码里可以这样写

  String krb5Conf = this.class.getClassLoader().getResource("krb5.conf").getFile();

但是打成jar包后就不行了,我们有很多方法获取jar包路径或者resource下文件路径

   File path = new File(ResourceUtils.getURL("classpath:").getPath());
  if (!path.exists()) path = new File("");
log.error("1:{}", path.getAbsolutePath());

//第二种
log.error("2:{}", System.getProperty("user.dir"));

//第三种
String path1 = ClassUtils.getDefaultClassLoader().getResource("test.txt").getPath();
                log.error("3:{}",URLDecoder.decode(path1, "utf-8"));

//第四种
String path2 = ResourceUtils.getURL("classpath:test.txt").getPath();
log.error("4:{}",path2);
//第五种
ApplicationHome h = new ApplicationHome(Demo.class);
File jarF = h.getSource();
log.error("5:{}",jarF.getParentFile().toString());

但是打印后你会发现路径里面带 !,此时就算你去掉!也不行

String path = ClassUtils.getDefaultClassLoader().getResource("test.txt").getPath();

就算把路径copy到linux,用cat命令也显示文件不合法,猜测打包之后的jar就是无法获取的

但是我们可以读取文件,然后写入固定路径,再使用

            write(getStringByInputStream(this.class.getClassLoader().getResourceAsStream("test.txt")),"/data/test.txt");
public static String getStringByInputStream(InputStream inputStream) {
  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
  try {
      StringBuilder result = new StringBuilder();
      String line;
      while ((line = bufferedReader.readLine()) != null) {
          result.append(line);
      }
      return result.toString();
  } catch (Exception e) {
      try {
          inputStream.close();
          bufferedReader.close();
      } catch (Exception e1) {
      }
  }
  return null;



blic static void write(String txt, String file) {
  try {
      BufferedWriter out = new BufferedWriter(new FileWriter(file));
      out.write(txt);
      out.close();
  } catch (IOException e) {
  }

当然了,生产环境中我们一般都是容器目录挂载,然后直接引用的

比如让运维吧文件a.txt放到机器中,然后容器data/挂载到该文件目录,我们就可以直接用/data/a.txt了文章来源地址https://www.toymoban.com/news/detail-511575.html

到了这里,关于jar包获取resource下配置文件路径的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Springboot项目打成jar包后获取resources目录下的文件失败的问题

    前几天在项目读取resources目录下的文件时碰到一个小坑,明明在本地是可以正常运行的,但是一发到测试环境就报错了,说找不到文件,报错信息是:class path resource [xxxx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:xxxx.jar!/BOOT-INF/classes!xxxx。 看了

    2024年02月11日
    浏览(61)
  • 系列二十九、Spring Boot打成jar包后,resources目录下的资源文件获取不到

            在做公司业务开发时,有一个地方是使用EasyExcel模板技术进行文件上传,测试环境是OK的,但是和前后端联调验证测试通过后,上传到生产环境就不行了,后来也是花费了很多时间才找出其中的问题,以下为解决方案。  

    2024年02月02日
    浏览(53)
  • 解决Springboot项目打成jar包后获取resources目录下的文件报错的问题

    前几天在项目读取resources目录下的文件时碰到一个小坑,明明在本地是可以正常运行的,但是一发到测试环境就报错了,说找不到文件,报错信息是:class path resource [xxxx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:xxxx.jar!/BOOT-INF/classes!xxxx。 看了

    2024年02月11日
    浏览(56)
  • jar 命令启动java 指定配置文件路径 jar如何启动

    一、各种启动方式 1.java -jar # 例子 java -jar test.jar 1. 2. 这是最简单的启动方式,同时弊端也是很多的。 弊端1:exit 退出终端会导致java进程中断。 弊端2:ctrl+c 退出启动展示页会导致java进程中断。 弊端3:直接关闭终端会导致java进程中断(启动时和启动完关闭都会导致java进程终

    2024年02月04日
    浏览(53)
  • java获取resources路径的方法

      我们在写程序的时候,有时候会发现代码不能正常运行,出现提示异常的问题,这就说明我们的代码没有执行完,也就是没有 resource,其实遇到这种情况,我们只需要把代码重新执行一遍即可。 在 java中是可以实现 resource的获取和使用的, java提供了两个方法: 第一个方法

    2024年02月06日
    浏览(39)
  • 获取jar包里的资源路径

    jar中资源有其专门的URL形式: jar:!/{entry} 。所以,如果jar包中的类源代码用File f=new File(相对路径);的形式,是不可能定位到文件资源的,启动jar包时会报出FileNotFoundException。 打包时将文件放在jar包外,然后通过服务器的路径去获取文件,File file = new File(“服务器的资源路径”

    2024年02月13日
    浏览(32)
  • Java读取resources下的文件及资源路径

    在Java开发中,经常需要读取项目中resources目录下的文件或获取资源路径。本文将介绍如何在Java中读取resources下的文件,并提供相关实例来说明。 方式一:使用ClassLoader 上述代码通过ClassLoader的 getResourceAsStream 方法获取resources目录下的 test.txt 文件的输入流,然后通过BufferedR

    2024年02月15日
    浏览(44)
  • java中获取配置文件路径中含有中文,出现乱码的情况解决方案

    问题背景: 读取配置文件,但是读到的目录信息是中文乱码的。 第一步: 参考代码如上截图,方法即:读取jdbc配置,获取了配置文件(jdbc.properties)地址,然后加载这个文件读取配置信息,但是获取的文件目录的地址中文转译了。 第二步: 设置编码格式为utf-8,查看重新获

    2024年02月16日
    浏览(43)
  • java项目中获取resources文件夹下文件

    方法一 获取到文件的流 方法二 直接获取路径 以上方法在服务器当中是否能获取到还未测试,公司要做个下载word文档功能,需要使用模板,于是测试了一下本地,后续将继续更新使用easypoi如何下载word文档 方法三 (重要) SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此

    2024年02月12日
    浏览(55)
  • jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk, .dex, .jar,.zip等格式的文件

    作者:JavaGuide 链接:https://www.zhihu.com/question/20264247/answer/2306405289 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。   jadx 是一款功能强大的反编译工具,使用起来简单方便(拖拽式操作),不光提供了命令行程序,还提供了 GUI 程序。

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包