【Exception】java.io.FileNotFoundException SpringBoot项目打jar包运行,读取资源文件失败

SpringBoot项目Jar包防反编译实战:从代码混淆到字节码加密 在Java应用开发中,保护知识产权和代码安全是开发者面临的核心挑战之一。Java字节码因其跨平台特性,虽易于分发,但也容易被反编译工具还原为可读的源代码,导致核心算法和敏感配置泄露。其原理在于.class文件包含了丰富的元数据信息。为了应对这一风险,代码混淆技术应运而生,它通过重命名、控制流变换等手段,在不影响程序运行的前提下,大幅增加反编译后代码的理解难度,从而有效保护业务逻辑。对于安全要求更高的场景,字节码加密结合自定义类加载器的方案提供了更强的静态保护,它在构建阶段对关键代码进行加密,仅在运行时于内存 阅读详情

读取资源文件失败!!!
在Windows平台开发过程中能正常运行,但是将SpringBoot项目打jar包运行就会报错,我们一起来看看究竟是什么导致的?

案发现场:

java.io.FileNotFoundException: class path resource [com/aden/modules/demo/mock/json/task_process.json] cannot be resolved to absolute file path because it does
not reside in the file system: jar:file:/E:/code/aden/adenx/adenx-fast/adenx-fast-web/target/adenx-fast-web-1.0.0-exec.jar!/BOOT-INF/lib/adenx-fast-manager-api-1.0.0.jar!/com/aden/modules/demo/mock/json/task_process.json
        at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:217)
        at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:180)
        at com.aden.modules.demo.mock.MockController.readJson(MockController.java:191)
        at com.aden.modules.demo.mock.MockController.taskProcess(MockController.java:173)
        at com.aden.modules.demo.mock.MockController$$FastClassBySpringCGLIB$$31542cbb.invoke(<generated>)

readJson方法源码:

private String readJson(String jsonSrc) {
	StringBuilderjson = new StringBuilder("");
	try {
		File file = ResourceUtils.getFile(jsonSrc);
		Path path = Paths.get(file.getPath());

		Files.lines(path)
				// 使用Stream很容易的过滤掉包含的空格
				.map(String::trim)
				.forEach(json::append);
		System.out.println(json.toString());
		System.out.println(json.toString().length());
	} catch (IOException e) {
		e.printStackTrace();
	}
	return json.toString();
}

解决方案:

采用读取流的方式访问文件:

ClassPathResource resource = new ClassPathResource("task_process.json");
InputStream inputStream = resource.getInputStream();

原因分析:

项目打成jar包后,资源文件也存在于jar包中,
文件的绝对路径是jar:file:/E:/code/aden/adenx/adenx-fast/adenx-fast-web/target/adenx-fast-web-1.0.0-exec.jar!/BOOT-INF/lib/adenx-fast-manager-api-1.0.0.jar!/com/aden/modules/demo/mock/json/task_process.json
但在运行过程中,spring是不允许直接访问jar包内的文件的,所以会报错。
SpringBoot应用安全开发与生产部署实战:JWT集成、JAR打包与服务器运维 在现代Java后端开发中,身份认证与授权是保障应用安全的核心机制。JWT(JSON Web Token)作为一种基于JSON的开放标准,通过数字签名实现无状态、分布式的身份验证,其原理是将用户信息编码为令牌,由服务端签发、客户端存储并在请求中携带,有效解决了Session在分布式环境下的扩展性问题。该技术为微服务架构和前后端分离应用提供了轻量级的认证解决方案,其价值在于简化服务端状态管理并提升系统可伸缩性。在实际工程实践中,JWT需与Spring Security框架深度集成,并严格防范算法篡改、敏感信息泄 阅读详情

相关推荐

SpringBoot对接FISCO BCOS区块链开发实战:Ubuntu部署与Tape配置详解

区块链后端开发本质上是高安全要求的Java Web服务工程,其核心在于将联盟链作为可信数据源接入企业级技术栈。SpringBoot凭借成熟的生态和FISCO BCOS官方Java SDK深度集成能力,成为政务、金融等国产化场景的首选框架;Tape作为SDK底层通信抽象层,直接决定链节点连接稳定性与TLS握手成功率;而Ubuntu 22.04 LTS因内核兼容性、国密算法支持及生产环境可复现性,被确立为FISCO BCOS推荐部署系统。本文聚焦真实产业交付中的链连接、合约调用、PDF安全生成、大文件上传、静态

weixin_33875839的博客 476

关于java.io.FileNotFoundException: class path resource [spring/springmvc.xml]异常的问题解决

 web.xml配置文件如下图所示: 但是老是报出以下的异常: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [org.spring/applicationContext.xml]; neste...

weixin_42696130的博客 3万+

RabbitMQ TLS配置实战:从自签名证书到SpringBoot安全连接

传输层安全协议(TLS)是保障网络通信机密性与完整性的核心技术,通过在通信双方之间建立加密隧道,有效防止数据在传输过程中被窃听或篡改。其工作原理基于非对称加密与对称加密的结合,首先通过证书交换完成身份认证和密钥协商,随后使用协商出的会话密钥进行高效的数据加密传输。这一技术对于构建安全的分布式系统至关重要,尤其是在微服务架构中,服务间通信的安全性直接关系到核心业务数据的安全。消息队列作为微服务间的关键通信枢纽,其通信链路的安全加固是生产环境部署的必备环节。本文聚焦于RabbitMQ这一广泛使用的消息中间件,结

weixin_30733003的博客 343

异常FileNotFoundException:DatabaseInifializationDependencyConfigurer does not exist

依赖问题解决记录:DatabaseInifializationDependencyConfigurerjava.io.FileNotFoundException: class path resource [org/springframework/boot/sql/init/dependency/DatabaseInifializationDependencyConfigurer.class] cannot be opened because it does not exist java.io.FileNot

清都高眠事事休的博客 3063

Java PDF生成实战:iText 7编程与模板填充核心技术解析

在企业级应用开发中,PDF文档的生成与处理是常见的需求,尤其是在报表、合同、票据等场景。其核心原理在于将数据与样式分离,通过编程或模板填充的方式动态生成标准化文档。这项技术的关键价值在于提升开发效率、保证文档格式统一,并支持批量处理。从技术实现层面,Java开发者通常借助成熟的PDF处理库来完成,其中iText作为生态中的老牌工具,提供了从零构建和模板填充两种主流方案。在实际应用中,根据文档版式的固定性与内容的动态性进行选型至关重要:对于格式固定、样式复杂的文档,推荐使用PDF模板填充技术;对于内容高度动态

weixin_30251829的博客 435

【异常】解决报错[org/springframework/security/web/AuthenticationEntryPoint.class] cannot be opened because

【异常】解决报错[org/springframework/security/web/AuthenticationEntryPoint.class] cannot be opened because

奶爸的编程之路,也就一周冷个三天 2195

SpringBoot 异常 java.io.FileNotFoundException: class path resource [com/sxw/springbootproducer/mappin

2019-11-08 17:23:24.446 ERROR 215864 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error c...

smallone233的博客 3862

SpringBoot校园二手交易平台实战:从数据库设计到并发下单部署全解析

在Java后端开发中,SpringBoot凭借自动配置机制大幅降低了环境搭建成本,已成为构建企业级应用的主流框架。而校园二手交易平台作为典型的业务闭环项目,天然覆盖用户认证、商品状态机、订单并发控制等核心场景,非常适合用来理解框架原理与工程实践的配合。围绕这一主题,文章从业务模块拆分出发,梳理了用户、商品、交易三大核心域的表结构设计方法,强调了价格用分存储、状态流转、事务边界等细节;同时深入解析了基于乐观锁的防超卖下单逻辑,以及JWT鉴权、文件上传、Docker部署等落地技术。对于正在准备毕业设计或希望提升

weixin_30268071的博客 410

记录 java.io.FileNotFoundException: class path resource [xxx] cannot be resolved...报错

踩坑

今天不要学习! 3502

单细胞分析实录(12): 如何推断肿瘤细胞

公众号后台回复20210418,获取本文的测试数据 1. 回顾 前面我已经讲解了inferCNV的基本用法,这一节继续学习:如何推断肿瘤细胞。本文应该是到目前为止,全网最详细的帖子(之一)。 关于肿瘤细胞的推断,比如研究上皮细胞起源的肿瘤,我见过的一些做法如下 简单粗暴型:将来源肿瘤病灶的所有上皮细胞都看成是肿瘤细胞 看CNV:将来源于肿瘤病灶的上皮细胞和参考细胞比较,将那些有明显CNV的细胞看作肿瘤细胞 看表达特征:考虑到有的肿瘤细胞可能没有CNV层面的变化,有的文章会根据肿瘤与正常的表达谱来区分是.

TOP生物信息 1万+

拆开一个烧坏的IGBT模块,手把手教你识别过压、过流、过温的“案发现场”

本文详细解析了IGBT模块失效分析的实战技巧,通过观察铝层熔化纹路、焊锡溢出形态等物理痕迹,手把手教你识别过压、过流、过温的典型失效模式。文章提供了从基础工具包到现场快速诊断的完整流程,帮助工程师精准定位IGBT模块失效的根本原因。

weixin_30655569的博客 424

SpringBoot“尽所欲研”学习交流社区系统

"尽所欲研"学习交流社区系统摘要: 该系统是基于SpringBoot框架开发的垂直技术社区平台,旨在解决Java开发者学习SpringBoot过程中面临的知识碎片化、实践不足等问题。平台整合了系统学习、项目实战、代码交流等功能,主要特点包括: 提供模块化实战项目库(电商系统、权限管理等),覆盖SpringBoot核心技术栈; 构建结构化知识图谱,支持学习路径规划与代码评审; 创新互动机制,包含项目协作区、代码沙盒、问答广场等场景; 采用微服务架构开发,本身作为SpringBoot最佳实践案例; 集成MySQ

xn19950718的博客 291

汇川EASY系列之以太网通讯(套接字socket做主站)

本文讲解汇川Easy系列使用以太网套接字socket通讯,本例中EasyPLC做主站。文中按步进行操作。细节明确。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 2190

[个人总结]-java常用方法

user.dir是一个系统属性,表示用户当前的工作目录,大多数情况下,用户的当前工作目录就是java项目的根目录(src文件的同级路径)cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。cmd /k dir 是执行完dir命令后不关闭命令窗口。cmd /c dir 是执行完dir命令后关闭命令窗口。// 获取命令输出结果。// 等待命令执行完成。// 调用CMD命令。

weixin_45210565的博客 1333

【Java核心高阶进阶】44-Java8核心新特性

模块十:Java新特性演进 · 第 1 篇Java 8 是 Java 语言历史上最重要的一次发布,它引入的函数式编程范式从根本上改变了 Java 的编码方式。即便到了 JDK 21 的今天,Lambda、Stream、Optional 仍是日常开发的高频工具。本篇将深入这些特性的语法、原理与底层机制,帮助你不仅会用,更知其所以然。

gaochufukanyongren的博客 24

智能水下机器人设计: 基于MATLAB的水下机器人动力学建模和控制系统设计,包括水下环境感知、路径规划和任务执行等

智能水下机器人是指能够在水下自主完成各种任务的机器人,例如探测、勘察、救援等。它具有广阔的应用前景,可用于海洋环境监测、水下考古、海上作业等领域。基于MATLAB的水下机器人设计可以为科研人员和工程师提供强大的建模和仿真工具,帮助他们设计更智能、更高效的水下机器人。智能水下机器人是未来海洋科技发展的重要方向,它将为海洋科学研究、水下考古和海上作业等领域带来新的机遇。MATLAB是一种功能强大的数学和科学计算软件,它可以为智能水下机器人设计提供强大的工具和支持。

走向CTO的路上... 962

外卖项目

这是一篇文章

2302_80248454的博客 955

Codex 的 AGENTS.md 到底怎么写?前端、后端两套实战模板,照抄就能用

文件名是大写AGENTS.md,放在项目根目录构建、测试、类型检查命令都是可直接复制执行的只写了 Agent 从代码里推断不出来的约定红线规则用了明确的否定句式(禁止/不要/Never)标注了自动生成目录和禁止修改的模块写清了交付要求(改动清单 + 验证命令 + 风险说明)没有任何密钥、密码、连接串整体一页能看完,核心要点 10 条以内每一条都能通过"删掉会不会更容易犯错"的测试一份短小精准的 AGENTS.md,比一份充斥模糊规则的长文件有用得多。

篮球界最会写bug的人;程序猿中打球最菜的人。 610

java面试题

案例2中new语句执行完以后,会创建两个对象,一个是字符串常量对象,会被字符串常量池引用,另一个是new的对象案例三第一行执行后,尚硅谷对象赋给s1,但是并不会存到字符串常量池中案例三如果换成jdk6就是另一种结果,即堆内存的尚硅谷和字符串常量池的尚硅谷不是一个对象关系是否合法说明抽象类implements接口✅ 合法抽象类可实现一个或多个接口接口extends接口✅ 合法接口可继承一个或多个接口抽象类extends接口❌ 非法必须改用implements接口。

2304_80073016的博客 322

HQChart实战教程21 - uniapp app端K线图定制tooltip

HQChart实战教程21 - uniapp app端K线图定制tooltip序效果步骤2. 注册标题绘制事件3. 标题绘制回调函数格式说明eventdataobjtooltip显示函数完整代码HQChart代码地址 序 hqchartK线图内置一个tooltip, 如果需要定制一个tooltip, 我们可以通过注册绘制标题事件,来自己做一个div显示数据。 参考教程HQChart实战教程7-自定义显示手势点击K线显示信息 效果 步骤 在外部创建一个view,并在view里创建需要显示的信息字段. 例子里

小银 2558

SerDes学习笔记:DFE均衡架构示例(USB3.1、PCIe3.0\4.0)

本文探讨了DFE均衡器架构在不同数据接口中的应用特性。研究表明,抽头数量随数据速率提升而增加,1-16抽头架构较为常见。通过PCIeGen3/4实例分析,对比了单抽头、双抽头和15抽头DFE的性能差异,证明多抽头结构能通过精细调节有效提升噪声容限和降低误码率。文章详细阐述了DFE工作原理,包括其通过反馈信号对输入信号的补偿机制,以及不同抽头对消除码间干扰的作用。实验采用8Gbps速率(125ps/UI)进行波形仿真,直观展示了均衡处理前后的信号变化,为理解信道均衡技术提供了重要参考。

一只豌豆象的博客 518

计算机知识分享论坛

本文介绍了计算机知识分享论坛的选题背景及其重要性。论坛选题需要从技术演进、开发者实践、行业趋势、社区生态和知识体系化五个维度进行策划。技术演进是选题的持续驱动力,开发者实践提供接地气的实用内容,行业趋势反映宏观市场需求,社区生态建设关注新手引导和深度讨论,知识体系化则将碎片信息转化为结构化内容。文章还提供了基于Java+SpringBoot+MySQL的技术开发环境配置,包含管理员和前台路径、数据库版本要求等详细信息。系统开发采用Maven3.3.9管理依赖,使用Navicat11进行数据库管理,展示了部分

weixin_63982010的博客 87

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

spring boot +spring cloud 启动报错问题

这个启动异常围绕了我一下午,上网也搜了许多资料,自己做下整合分析,判断觉得可能是spring boot +spring cloud 的版本冲突问题,于是乎就上网搜了下版本方面的兼容问题,问题最终得以解决。java.io.FileNotFoundException: class path resource [org/springframework/web/context/ServletContex...

凝神遐想的博客 9287

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

异常解决 java.io.FileNotFoundException: class path resource [spring/applicationContext_*.xml]

maven创建web工程的时候报下面的错误 org.springframework.beans.factory.BeanDefinitionStoreException: Could not resolve bean definition resource pattern [classpath:spring/applicationContext-*.xml]; nested exception

信念随梦的博客 8万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java.io.FileNotFoundException: class path resource [tessdata] cannot be resolved to absolute file pa

java.io.FileNotFoundException: class path resource [tessdata] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/F:/study/intelliJ_IDEA/java_program/Pic...

qq_38865022的博客 1140

spring boot maven 打包 本地依赖的jar

解决方案: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 工程主入口-->

纯洁的明依 1112
上一篇: 【Exception】java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, ...
下一篇: 【Exception】InvalidConnectionAttributeException: The server time zone value ''Öйú±ê׼ʱ¼ä' is ...
tanpenggood
博客等级 码龄9年 129粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值