jar包读取资源文件报错:找不到资源文件(No such file or directory)

tensorflow1.14-libtensorflow_framework.so.1 cannot open shared object file no such file or directory 简介 在下是刚毕业的小萌新,现在在一家股票资讯公司做Java开发,身在nlp小组,自然要接触很多模型,我的任务就是tensoflow模型的工程部署,前不久我们开始使用tensorflow1.14,Estimator真香。所以对应Java这边也需要使用tf1.14导入graph,这里就来说说官方jar包的问题。 报错 Windows下无异常,Linux下服务启动时报:libtensorflow_fr... 阅读详情

现象

先看一段代码

File readFile = null;
        try {
            String path = this.getClass().getClassLoader().getResource(fileLocation).getPath();
            readFile = new File(path);
        } catch (Exception e) {
            logger.error("=================初始化sql文件未找到==================");
            logger.info(e.getMessage());
            return;
        }
        BufferedReader reader = null;
        try{
            reader = new BufferedReader(new FileReader(readFile));
            String tempString = null;
            int line = 1;
            StringBuilder sb = new StringBuilder();
            while ((tempString = reader.readLine()) != null){
                //此处拼接sql 省略
			}
        }catch(IOException e){
            logger.error("=================初始化sql文件报错啦==================");
            logger.info(e.getMessage());
        }finally{
            if(reader != null){
                try{
                    reader.close();
                }catch(IOException e){
                    logger.error("=================初始化sql文件报错啦==================");
                    logger.info(e.getMessage());
                }
            }
            if (logger.isInfoEnabled()) {
                logger.info("==================读取ck sql文件完成====================");
            }
        }

这里的代码是 安装初始化的sql 启动的时候会去读sql并执行
代码在本地idea 利用springBoot自带的tomcat启动是没有问题的,但是在测试环境tomcat启动就会有问题报错
file:home/dev/tomcat/xxx…xxx省略多层/xxx.jar!/xxx.sql (No such file or directory)
本项目是gradle多模块开发的,有许多jar包互相引用,sql文件就在另一个jar包中
但是查看路径后发现是有sql文件的

问题

由上面报错输出file:home/dev/tomcat/xxx…xxx省略多层/xxx.jar!/xxx.sql 可知,该值是我们通过getClass().getClassLoader().getResource(fileLocation).getPath();读取的文件路径,显然这个值不是一般意义上的URL地址。所以jar包中的类源代码用BufferedReaderreader = new BufferedReader(new FileReader(readFile));的形式,是不能定位到文件资源的。

这段问题是我引用的哈哈 个人理解是jar包中的资源不可以读取 jar后面带了个叹号 不知道是否正确

解决

InputStream inputStream = null;
        try {
            inputStream = this.getClass().getClassLoader().getResource(fileLocation).openStream();
        } catch (Exception e) {
            logger.error("=================初始化sql文件未找到==================");
            logger.info(e.getMessage());
            return;
        }
        BufferedReader reader = null;
        try{
            reader = new BufferedReader(new InputStreamReader(inputStream));
            String tempString = null;
            int line = 1;
            StringBuilder sb = new StringBuilder();
            while ((tempString = reader.readLine()) != null){
           		// 此处省略
           	}
        }catch(IOException e){
            logger.error("=================初始化sql文件报错啦==================");
            logger.error(e.getMessage(), e);
        }

直接通过classLoader读出流再转换为BufferedReader就可以了
InputStream inputStream =this.getClass().getClassLoader().getResource(fileLocation).openStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

SpringBoot Jar包加密防护:基于自定义ClassLoader的字节码保护实践 在Java应用开发中,代码保护是一个重要的安全考量。Java字节码因其可读性,容易被反编译工具逆向分析,这可能导致核心业务逻辑或敏感算法泄露。其原理在于JVM加载的是.class文件,而标准反编译工具可将其还原为近似源码。为提升代码安全性,开发者常采用字节码混淆或加密技术,通过改变字节码结构或内容,增加逆向难度。在工程实践中,自定义ClassLoader是实现运行时动态解密的关键技术,它允许在类加载时介入,对加密的字节码进行解密。这种方法特别适用于需要保护核心代码但又不愿引入复杂商业方案的SpringBoo 阅读详情

相关推荐

Java应用容器化中ETM lib格式依赖的排查与解决方案

在Java企业级应用开发和部署中,依赖管理是核心环节。Java应用通常通过类路径(Classpath)和本地库路径(java.library.path)加载JAR包和本地资源。其原理涉及类加载机制与操作系统动态链接库的交互。理解这一机制的技术价值在于确保应用在不同环境下的可移植性与稳定性,尤其在微服务与云原生架构中至关重要。应用场景包括传统系统现代化改造、混合云部署以及需要调用本地库(如硬件驱动、高性能计算库)的Java项目。本文聚焦于一类特殊的依赖格式——ETM lib,它常包含本地代码(如.dll, .

congji3817的博客 330

(已解决)jar!/BOOT-INF/classes!/application.yml (No such file or directory)

当我们使用文件路径访问文件时,该路径下的文件必须是可访问的,而jar文件本质是上是一个压缩文件,需要解压才能访问,所以程序会直接报错。

ThinkStu的博客 10万+

hadoop:运行时报错“No such file or directory”...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,但经过精心筛选和整理,保证每一条解决方案都经过实战验证,真实可靠。

**My Coding Family** 1188

关于使用this.getClass().getResource(“/“)获取文件时遇到的坑_ClassPathResource加载资源文件用法

最近在工作中遇到需要读取配置文件,然后第一想法就是将文件放到项目的resources目录下, 然后使用: String fileName = "config/zh.md" String path = this.getClass().getResource("/").getPath() + fileName; System.out.println(path);// D:/example/exam01/target/classes/config/zh.md 在IDE工具中开发及Debug时一切都正常,但是打

qq_43842093的博客 4026

MyEclipse 2021.5.24a zip解压报错全解析:从EOCD到安装汉化

zip 是跨平台分发最常用的压缩格式,大到 IDE 环境、数据库安装包,小到字体和配置文件,都习惯用它打包传输。但正因为文件结构特殊,zip 在下载不完整、传输被截断时,很容易遇到 `invalid zip archive` 或 `could not find eocd` 这类报错,根源往往在于文件末尾的 EOCD 目录丢失。理解 zip 的格式原理,掌握 Linux 下 `unzip`、`zip -ff` 等命令的正确用法,能帮你高效处理损坏压缩包与分卷解压问题。这些基础操作同样适用于 MyEclipse

weixin_33766168的博客 447

保姆级教程:用VESTA软件5分钟搞定纳米颗粒Wulff Construction建模(以Au金为例)

本文提供了一份详细的VESTA软件教程,指导用户如何在5分钟内完成纳米颗粒Wulff Construction建模,特别以金(Au)为例。从环境搭建、基础晶体结构创建到Wulff Construction设置和可视化优化,涵盖了全流程操作步骤和常见问题解决方案,适合科研新手快速上手。

weixin_29311017的博客 435

jar 包内 获取 resources 路径失败,报错空指针

背景 SpringBoot 项目调用一个本地 jar 包的方法,需要项目 resources 下的文件路径。文件存放在 resources 下。 试错流程 1 、原始代码:先用 ClassLoader.getSystemResource("文件名"),本地运行正常。但是打成 jar 包后报错空指针。 2 、 第一次修改:看到网上大部分说用this.getClass().getClassLoader().getResource(),还是不行,这俩原理一样。 3 、第二次修改:还有一种方法是利用文件流获取

2489

【LTspice】005 伯德图绘制

目录 1 伯德图介绍 2 LTspice 截止频率验证 3 LTspice中如何添加光标 4 LTspice中如何将 幅频 和 相频曲线分开 1 伯德图介绍 Bode图由对数幅频特性和对数相频特性两张图组成。伯德图_百度百科 (1)对数幅频特性曲线 对数幅频特性是频率特性的对数值L(ω)=20lgA (ω)(dB)与频率ω的关系曲线;对数幅频特性的纵轴采用线性分度,为幅值的分贝数,即 L(ω)=20lgA(ω),A(ω)每增加10倍,L(ω)增加20dB;横坐标采用对数分度,即横轴上的ω取

m0_59642765的博客 1万+

java工程内部文件路径读取问题jar:file:\No such file or directory

今天发现一个问题,在本地的开发环境下可以读取.pptx文件。但是部署到测试环境或者开发环境就会报错,因为此时这个.pptx文件被打成jar包了。导致读取文件时无法读取。一旦被打入jar包,path就变为了jar:file:\usr\local\product\jar\product-controller-0.0.1-SNAPSHOT.jar!\BOOT-INF\classes!\template\...

ccmedu的博客 8635

DSP(数字信号处理器)技术概要

数字信号处理器(digital signal processor,DSP)是一种用于数字信号处理的可编程微处理器,它的诞生与快速发展,使各种数字信号处理算送得以实时实现,为数字信号处理的研究和应用打开了新局面,提供了低成本的实际工作环境和应用平台,推动了新的理论和应用领域的发展。目前,DSP技术在通信、航空、航天。雷达、工业控制、医疗、网络及家用电器等各个领域都得到了广泛应用。 1.1 DSP系统和芯片的结构特点1.1.1 DSP系统的基本结构通过传感数将非电物理量转换为模拟电信号,预处理一般包括放大器和滤

m0_46582485的博客 2万+

iOS马甲包过审实战:如何用5天时间搞定4.3审核(附完整代码混淆方案)

本文提供了一套为期五天的高效实战方案,专门解决iOS应用因重复或抄袭问题而被App Store的4.3条款拒绝的难题。方案涵盖深度分析、代码混淆、资源翻新及环境隔离等系统性步骤,并附有完整的代码混淆示例,旨在帮助开发者在合规框架内重塑应用,显著提升过审成功率。

weixin_29234239的博客 145

maven项目打jar包后获取resources下文件的代码报错:FileNotFoundException:no such file or directory

原因就是打jar包后,获取不到文件夹下的文件 https://blog.youkuaiyun.com/weixin_39981289/article/details/97670898?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-1.control ...

LuvFeral的博客 1416

【异常】SpringCloud Gateway报错503 SERVICE_UNAVAILABLE “Unable to find instance for xxx-gen“

网关服务报错,如下。

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

解决在spring boot打成jar包后读取resource下资源文件抛出 java.io.FileNotFoundException

解决在spring boot打成jar包后读取resource下资源文件抛出 java.io.FileNotFoundException 具体报错如下:file:/data/XXX/xxxx.jar.!/BOOT-INF/classes!/configs/xxxxx.xlsx(No such file or directory), 开发环境spring boot2.15 需求:在resource下需要提供一套excel,world格式供前端下载模板 String file = "static/人员基础信息导

深邃灵魂 5526

手把手教你学simulink(11.6)--Simulink 航空航天场景:基于Simulink的飞机俯仰控制系统的数学模型

自动驾驶系统在航空航天领域具有重要应用,特别是在商业航空、军用航空和无人机等领域。PID控制器因其简单且有效的特性,被广泛应用于飞行控制。Simulink提供了一个强大的平台,用于建模、仿真和分析动态系统,非常适合设计和测试自动驾驶系统的控制器。通过本项目的实施,我们成功设计和仿真了一个用于控制飞机俯仰角的PID控制器。该项目展示了从系统建模、控制器设计、仿真验证到结果分析的完整流程,为PID控制器的设计提供了有价值的参考。希望这个实例能够为你的航空航天项目提供有用的指导。

MHD0815的博客 565

半小时搞定Yolov5安装配置及使用(详细过程)

Yolov51. 下载Yolov52. 安装Yolov5 在下载配置Yolov5前,先要安装好Anaconda环境,可参考之前博文:最新Anaconda3的安装配置及使用教程(详细过程) 1. 下载Yolov5 首先下载Yolov5源码: Yolov5 Github地址:https://github.com/ultralytics/yolov5 直接git clone到本地工作目录,等待下载完成: Yolov5代码目录架构: 2. 安装Yolov5 源码下完后,下面开始安装Yolov5所需模块,

HowieXue 薛永浩的博客 12万+

spring boot打包文件后,报错\No such file or directory

现象: 一段代码: ClassLoader loader = XXXUtil.class.getClassLoader(); String jsFileName = loader.getResource("") + "/resources/" + fileName; logger.info("文件路径为"+jsFileName); ...

weixin_34212762的博客 2879

自动识别象棋棋子的OpenCV应用

在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。

WzisTypescript的博客 904

3、hadoop运行jar包报错 : "/bin/bash: /bin/java: No such file or directory"

报错信息截图 可以很明确的看到报错信息,/bin/java未生效,原因是我是用的配置环境的方式使用的jdk,未采用yum过进行安装jdk 解决措施:创建真实的jdk目录到/bin/java 创建软链接ln -s /opt/software/jdk1.8.0_201/bin/java /bin/java 关于ln链接 ln链接分为软件链接和硬链接 硬链接 硬连接的作用是允许一...

Norni的博客 1811

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jar包部署后,读取resources目录下文件报FileNotFoundException:(No such file or directory)

一、问题场景 最近遇到一个很奇怪的问题,放在资源目录下的同一份文件,在本地跑的时候能正常获取,打成jar包后部署在服务器上时就会报FileNotFoundException,这种本地跑和服务器上运行结果不一样的问题往往最让人头疼。 二、问题发现 通过查看日志,发现服务器在读取资源文件目录的时候获得的地址是这样的: 看到报错信息后,瞬间就明白了。代码在服务器上运行的时,获取资源目录下的文件路径时会...

qq_42118320的博客 2419

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

打包后的jar包运行在正式环境时获取resources下的静态文件报错(No such file or directory)(已解决)

在springcloud项目中,实现PDF生成打印时,中文字体需要加载字体静态文件。这段代码在本地运行是是没问题的,但是在线上环境,系统是通过jar部署的,JAR 包中的资源路径与普通文件系统路径有所不同,需要使用特殊的方法来读取。我们将资源文件从 JAR 包中复制到一个临时文件,然后使用该临时文件进行后续处理。这种方法避免了直接访问 JAR 包内部文件路径的问题。),并且在构建 JAR 包时被正确打包。位于你的资源目录(通常是。需要注意的是,请确认。

填坑是一个过程 454

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java程序“找不到主类”错误全解析:从MANIFEST.MF到打包部署

在Java开发中,类路径(Classpath)和JAR包结构是程序从源码到运行的核心基础。其原理在于JVM通过类加载器根据指定的路径寻找并加载.class文件。理解这一机制的技术价值在于,它能确保应用在不同环境下可靠启动,是解决部署问题的关键。尤其在微服务和持续集成场景中,正确的打包方式直接影响交付物的可移植性。当遇到“错误:找不到或无法加载主类”时,问题往往源于可执行JAR包的MANIFEST.MF文件配置错误或依赖缺失。本文聚焦于Spring Boot打包和JAR包结构分析,通过剖析MANIFEST.M

weixin_34198453的博客 479

spring-boot项目导入代码jar包拉取一直报hosts代理异常

spring-boot项目导入代码jar包拉取一直报hosts代理异常 原有代理 因为之前是在公司办公,内网需要配代理,所以在maven的settings文件中设置了代理配置。一开始用的是maven安装包下conf的setting,于是在该文件加了代理。后来项目更换以及版本更换,选择另写一个settings以及repository,于是在这个settings中也增加了代理配置。 jar包拉取错误 ...

qq_38986715的博客 310
上一篇: Mac下Homebrew切换源
下一篇: Java 生成随机长度字母组合
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值