Jar包启动通过ClassPathResource获取不到文件路径问题_classpathresource找不到文件-程序员宅基地

技术标签: jvm  java  jar  springboot  

项目目录结构

在这里插入图片描述

maven项目resources目录也是会被编译到classpath下的。

      ClassPathResource resource = new ClassPathResource("/map/map.properties");
        InputStream inputStream = resource.getInputStream();
        System.out.println("inputStream.available() = " + inputStream.available());
        System.out.println("resource.getFile().getAbsolutePath() = " +    	resource.getFile().getAbsolutePath());

如果是使用idea进行本地开发时,是可以获取到classpath下的资源的路径的,因为是读取的磁盘上的真正的那个文件。

在这里插入图片描述

但是如果将项目打包成一个jar包后,再获取map.properties是获取不到的,对于操作系统来说最多只能读取到jar包,而不能再继续读取jar包里面的文件了,如果继续读取,只能交给jvm去读了,此时能读取到二进制流,而不能获取到路径。可通过以下几种方式获取classpath下的资源。

 ClassPathResource classPathResource = new ClassPathResource("/map/map.properties");
        InputStream cis = classPathResource.getInputStream();
        //获取classpath下第一个/map/map.properties,这个根据jar包的加载先后顺序有关
        InputStream ris = ClassPathResource.class.getClassLoader().getResourceAsStream("/map/map.properties");
        //这个是获取classpath下所有的map/map.properties,在jvm运行时,所有jar都相当于是一个classpath
        Enumeration<URL> resources = ClassPathResource.class.getClassLoader().getResources("/map/map.properties");
        
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43750656/article/details/126114792

智能推荐

Linux安装mpp数据库(Greenplum 集群部署)_用linux连接mpp数据库插入数据-程序员宅基地

文章浏览阅读1.3k次。下载greenplum-db-5.23.0-rhel7-x86_64.bin安装包个人百度网盘地址:链接:https://pan.baidu.com/s/1YCIo9vS0fSfi6pHwDLL5KQ 提取码:jmr6简单记录一下安装mpp(greenplum)的过程,以及遇到的问题。不喜勿喷简单来说GPDB是一个分布式数据库软件,其可以管理和处理分布在多个不同主机上的海量数据。对于GPDB来说,一个DB实例实际上是由多个独立的PostgreSQL实例组成的,它们分布在不同的物理主机上,协同工作,呈_用linux连接mpp数据库插入数据

docker api未授权导致rce 漏洞修复_docker未授权访问漏洞怎么修复-程序员宅基地

文章浏览阅读1.3k次。docker api未授权导致rce 漏洞修复_docker未授权访问漏洞怎么修复

设计模式-30-中介模式-行为型模式-程序员宅基地

文章浏览阅读673次,点赞30次,收藏10次。现在,我们来学习23种经典设计模式中的最后一个,中介模式。跟前面刚刚讲过的命令模式、解释器模式类似,中介模式也属于不怎么常用的模式,应用场景比较特殊、有限,但是,跟它俩不同的是,中介模式理解起来并不难,代码实现也非常简单,学习难度要小很多。如果你对中介模式有所了解,你可能会知道,中介模式跟之前讲过的观察者模式有点相似,所以,今天我们还会详细讨论下这两种模式的区别。

一新概念3单词积累11-30-程序员宅基地

文章浏览阅读187次。在这里插入图片描述。

CMake静态库动态库的构建和链接之工程实用篇_cmakelist.txt中添加相应的静态库或者动态库 ubuntu-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏23次。在这里不再赘述。Windows平台下可用cmake-gui生成vs的.sln工程,Linux平台下可以运行cmake命令。_cmakelist.txt中添加相应的静态库或者动态库 ubuntu

用C语言递归实现火车调度算法详解_列车调度c语言-程序员宅基地

文章浏览阅读6.5k次,点赞38次,收藏133次。用C语言递归算法实现火车调度想法详解_列车调度c语言

随便推点

SAP 人力资源工资配置项2---工资类型配置_sap人员子类别如何对应工资等级-程序员宅基地

文章浏览阅读5.1k次。sap中使用工资等级管理工资_sap人员子类别如何对应工资等级

郑州大学算法设计与分析实验4-程序员宅基地

文章浏览阅读1.2k次,点赞21次,收藏20次。【代码】郑州大学算法设计与分析实验4。

Unity中使用脚本动态创建Mesh(圆锥体)_unity mesh生成-程序员宅基地

文章浏览阅读420次。再Unity中,使用脚本动态添加Mesh(圆锥体)_unity mesh生成

PuTTY 中文教程 1-程序员宅基地

文章浏览阅读215次。PuTTY 中文教程PuTTY 中文教程更新记录版权声明序言一些基本知识简介安装第一印象,开始登录一台远程主机首次登录一台主机时又看到了中文乱码怎么还是乱码?在 PuTTY 里面怎样选中,复制和粘贴?实时保存会话关于注销登录的一些事情窗口保存..._putty return to normal shell environment

Linux离线安装mysql详细教程-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏19次。【代码】Linux离线安装mysql详细教程。_linux离线安装mysql

Bootstrap-fileinput 插件的使用_fileinput插件-程序员宅基地

文章浏览阅读783次。upload.single的参数 file-data 要与前端from表单中input输入框的name属性的值保持一致,否则报错 MulterError: Unexpected field。在router目录下创建 upload.js。在项目根目录下创建 app.js。_fileinput插件

推荐文章

热门文章

相关标签