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

智能推荐

【路径规划】基于matlab人工势场算法多机器人协同编队避障路径规划【含Matlab源码 1192期】_matlab如何绘制协作避障规划图-程序员宅基地

文章浏览阅读3.2k次,点赞5次,收藏47次。人工势场算法多机器人协同编队避障路径规划完整的代码,方可运行;可提供运行操作视频!适合小白!_matlab如何绘制协作避障规划图

activity串行多实例审批_activities 多实例-程序员宅基地

文章浏览阅读3.3w次。前言在审批场景中,有这么个需求,某个节点需要多个人审批,但这些人需要按照一定的顺序进行审批才算完成,这就需要用到activity串行多实例会签;下面就来探讨一下在这种场景下的具体实现1、定义流程文件该图和上一篇的差不多,需要修改的地方在于,Sequential的这个参数需要勾选上,意思就是说,在节点为多实例的情形下,是否顺序审批,默认为false,即其中多个任务审批时没有顺序的2、部署并启动流程实例 public static void main(String[] args) { _activities 多实例

如何确定IP在同一网段_判断ip是否在一个网段-程序员宅基地

文章浏览阅读2.6w次,点赞20次,收藏84次。一 。IP地址分类我们将IP地址分为了【A B C D E】五大类,但是D和E不对民用组织开放,所以我们能使用IP地址的只有ABC三类。判断四组IP的第一个数组来确定是哪类。【注意:127.0.0.1不再里面,是因为它代表当前计算机自己】二。判断每一类IP是否属于一个网段(一)A类1. A类IP用第一个数字来表示不同网段。例如:1.0.0.0和2.0.0.0是不同的网络..._判断ip是否在一个网段

html最基础的几个标签_html中最基本的标签aheadbhtmlctitle-程序员宅基地

文章浏览阅读313次。基本网页标签将一个网页看成人的话,那么一个网页标签也分别有表示皮肤、头、脸、身体的部位<html> <head> <!--head中一般写入一些浏览器中的配置标签--> <meta charset='utf-8' /> <title> 这是我的第一个网页</title> </head> &..._html中最基本的标签aheadbhtmlctitle

电子类经典电子书分享(信号系统 模电 ADI)_放大器设计实践125问全解-程序员宅基地

文章浏览阅读668次。最近阿里冲容量,拿些压箱底的东西出来吧。没有注册的,可以用我的链接注册一下,再用手机app登一下,咱们各享500G空间。我在使用不限速「阿里云盘」,赠送你 500GB 快来试试吧------------我在使用不限速「阿里云盘」,赠送你 500GB 快来试试吧 ------------点此链接领取福利:https://pages.aliyundrive.com/mobile-page/web/beinvited.html?code=21ed59d1 信号与系统包括以下内._放大器设计实践125问全解

Windows域控禁用U盘和光盘的策略 【全域策略生效】_域控关闭自动打开u盘策略-程序员宅基地

文章浏览阅读2.6k次,点赞5次,收藏2次。目录开始--管理工具--组策略管理进入组策略界面在主域下编辑DefaultDomainPolicy按照以下路径打开策略编辑器可移动存储访问U盘策略和光盘策略分开特殊情况测试域策略立即生效客户端生效生效效果开始--管理工具--组策略管理进入组策略界面在主域下编辑DefaultDomainPolicy按照以下路径打开策略编辑器可移动存储访问可移动光盘:控制U盘的读取、执行、写入权限CD和DVD:控制光盘的读取、执行、写入权._域控关闭自动打开u盘策略

随便推点

linux编程常用指令_linux实现代码的指令-程序员宅基地

文章浏览阅读154次。一、网络函数(1)htons(2)inet_addr 点格式转换为无符号长整型 ina.sin_addr.s_addr = inet_addr("132.241.5.10");(3)inet_ntoa 无符号长整型转换为点格式 struct in_addr addr1; ulong l1; l1= inet_addr("192.168.0.74"..._linux实现代码的指令

memmove函数_void *memmove(void *dest, const void *src, size_t -程序员宅基地

文章浏览阅读1.1k次。在这个例子中,字符串"hello world!"被移动,使得输出为 “hello hello world!是一个标准库函数,用于 C++ 中的内存操作。它主要用于在内存中移动或复制字节。可以处理源内存区和目标内存区重叠的情况。如果源内存区和目标内存区重叠,此函数会返回指向目标内存区的指针。仍然可以正确地复制字节,而。_void *memmove(void *dest, const void *src, size_t n);

2013最新版Subversion 1.7.10 for Windows x86 + Apache 2.4.4 x64 安装配置教程+错误解决方案...-程序员宅基地

文章浏览阅读140次。一 、工作环境  操作系统:Windows Server 2008 R2 SP1 x64  Apache版本:2.4.4  Subversion版本: Setup-Subversion-1.7.10.msi  TortoiseSVN版本:TortoiseSVN-1.7.13.24257-x64-svn-1.7.10.msi +LanguagePack_1.7.13.24257..._windows subversion x64

python拟合直线的斜率_线性曲线拟合总是得到斜率和y的中间值为1-程序员宅基地

文章浏览阅读1.1k次。我得到了一些东西作为Excel的线性拟合,使用scipy basinhopping而不是曲线拟合和大量迭代。运行迭代需要一点时间,而且还需要一个错误函数,但它是在没有缩放原始数据的情况下完成的。Basinhopping docs.import numpy as npimport matplotlib.pyplot as pltfrom scipy.optimize import basinhopp..._一阶线性拟合斜率

广西计算机应用基础试题及答案,修订版成人大专考试试卷(有答案).-程序员宅基地

文章浏览阅读376次。广西医科大学融水函授站成人大专考试试卷课程:计算机应用基础专业:班级:姓名:学号:一、Word与Excel部分1.编辑排版一个文档完毕后,若要知道其打印效果,可选择( A )功能。A.打印预览 B.模拟打印 C.提前打印 D。屏幕打印2.Word窗口中打开文档MWA,修改后另存为MWC,则文档( B )。A.MWA是当前文档 B.MWC是当前文档C.MWC和MWA都是当前文档 D.MWC和MWA均...

T-sql语句修改数据库逻辑名、数据库名、物理名-程序员宅基地

文章浏览阅读104次。--更改MSSQL数据库物理文件名Sql语句的写法--注意:要在活动监视器里面确保没有进程连接你要改名的数据库!!!!!!!!!!!!!!!!!!!!-- Sql语句如下USE master --改逻辑名ALTER DATABASE YQBlog MODIFY FILE(NAME='YQBlogAA',NEWNAME='YQBlog') -- GOALTER..._tdsql修改数据库名称

推荐文章

热门文章

相关标签