FileNotFoundException:xxx(系统找不到指定的路径)

news2024/11/24 16:06:03

目录

前言

背景

解决方法

错误示例


前言

这次是有个两年前的项目吧,不知道为什么无法启动了。中间迭代了多个版本,现在另一个同事接手了,领导让看一下。因为时间间隔过长,问题处理比较费劲。其中有的是配置问题,比较好解决。

中间有个FileNotFoundException的问题困扰了很长时间,最后找了个简单法子解决,希望给有碰到的网友提供些方法和灵感。报错如下:

image

背景

我用的idea而领导用的eclipse,这个无论是哪个用tomcat是没有这个错误的。而使用maven启动就不行,原因大致如下:

1.当我们使用Maven来运行Spring Boot Application时,它默认会从项目的根目录下的 /src/main/resources 文件夹读取资源文件。

2.而当我们使用Tomcat来运行Spring Boot Application时,它会从编译过后的 /target/classes 文件夹读取资源文件。

3.最后还发现了在pom文件中有相关创建etc文件夹下的代码,关键代码和截图:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.1.1</version>
   <configuration>
      <!--将类文件打成war包 -->
      <failOnMissingWebXml>false</failOnMissingWebXml>
      <!--将资源文件打到classes目录下 -->
      <webResources>
         <resource>
            <directory>data/poem</directory>
            <targetPath>WEB-INF/data/poem</targetPath>
            <filtering>true</filtering>
         </resource>
         <resource>
            <directory>etc</directory>
            <targetPath>WEB-INF/etc</targetPath>
            <filtering>true</filtering>
         </resource>
      </webResources>
   </configuration>
</plugin>

image

问题流程:可以正常启动,中间报错也可以,但是访问接口就会报错,然后自动停止(maven启动)。如下图:

image

image

解决方法

1.直接在下面建立一个名为etc文件夹的

image

2.在IDEA中,你可以通过以下步骤设置Maven的工作目录:

  1. 在IDEA的右侧边栏中打开 "Maven Projects" 工具窗口。
  2. 找到你想运行的Maven项目,右键点击并选择 "Run Maven Build..."。
  3. 在弹出的对话框中,找到 "Working directory" 区域,填入你想设置的目录路径,比如

image

  1. 之后每次运行该Maven项目时,都会使用你设置的工作目录。这样应该就可以解决你的问题了。

提醒一下,使用绝对路径可能会导致你的项目在其他环境中无法正常运行。如果可能,建议你使用相对路径或类路径来引用资源文件。

思路:我们在报错日志中可以明显看到这个是去寻找的绝对路径,所以我们如果只是想本地测试的话,直接使用上面的办法指定目录即可。

在代码中查到引用了一个包,包中的业务逻辑是查询项目下etc文件。因为我使用的时候是21年,所以我强烈怀疑是有人后期有改动这个配置的代码地址,并且我回滚后依旧无法正常启动。

image

错误示例

这些下面是我在网上百度是碰到的一些解决方法,没有顶用的,供大家参考下。

1.修改配置文件的路径:

data-cloud-service-client.properties

文件移动到你的源代码目录,如src/main/resources,然后在代码中使用

classpath:data-cloud-service-client.properties

image

2.使用Spring的@PropertySource注解: 如果你使用Spring,可以用@PropertySource注解来指定配置文件的位置。它可以支持文件路径和类路径,比如:

@Configuration
@PropertySource("file:E:/Project/unios/unios-skill-bspt/unios-skill-bspt-controller/etc/data-cloud-service-client.properties")
public class Application {
   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
   }
}

image

3.在Maven pom.xml文件中添加资源(有可能可以): 可以在pom.xml文件中指定额外的资源路径。下面是一个例子:

<resources>
            <resource>
                <directory>unios-skill-bspt/${project.basedir}/etc</directory>
                <includes>
                    <include>data-cloud-service-client.properties</include>
                </includes>
            </resource>
        </resources>

image

说实话这个bug解决倒是不难,难点在于找到bug的源头,尤其是多年的老代码,真的是全靠自己扣,真是太费劲了。

今天就到这里吧,感觉有用的小伙伴可以点个赞,你的支持就是我更新的最大动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux学习】超详细——进程(2)

三、进程状态 3.1 准备知识 进程阻塞&#xff1a;进程因为等待某种条件就绪&#xff0c;而导致的一种不推进的状态&#xff08;例如进程卡顿&#xff09;&#xff0c;因而阻塞一定是在等待某种资源。为什么阻塞&#xff1f;进程需要通过等待的方式&#xff0c;等具体的资源被别…

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心

SpringCloudAlibaba Nacos配置中心 在java代码中或者在配置文件中写配置&#xff0c;是最不雅的&#xff0c;意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中&#xff0c;每次修改了配置后只需要重启一次服务即可。话不多说&#xff0c;直接干货拉…

java实现ffmpeg音频文件分割

项目中需要将视频会议中录入的音频文件通过阿里云语音识别为文件&#xff0c;但是阿里云语音识别对音频大小有限制&#xff0c;因此通过ffmpeg将大音频文件分割为几个短音频文件&#xff0c;并进行语音识别操作。 代码如下&#xff1a; package com.vion.utils; import java.i…

openGauss学习笔记-18 openGauss 简单数据管理-WHERE子句

文章目录 openGauss学习笔记-18 openGauss 简单数据管理-WHERE子句18.1 语法格式18.2 参数说明18.3 示例 openGauss学习笔记-18 openGauss 简单数据管理-WHERE子句 当我们需要根据指定条件从表中查询数据时&#xff0c;就可以在SELECT语句中添加WHERE子句&#xff0c;从而过滤…

Install Ansible on CentOS 8

环境准备&#xff1a; 1.至少俩台linux主机&#xff0c;一台是控制节点&#xff0c;一台是受控节点 2.控制节点和受控节点都需要安装Python36 3.控制节点需要安装ansible 4.控制节点需要获得受控节点的普通用户或root用户的权限&#xff0c;控制节点需要ssh客户端&#xff0c;…

24考研数据结构-——绪论

数据结构 引用文章第一章&#xff1a;绪论1.0 数据结构在学什么1.1 数据结构的基本概念1.2 数据结构的三要素1.3 算法的基本概念 引用文章 在此基础上增加自己的学习过程: 《王道》数据结构笔记整理2022 1.2数据结构三要素——逻辑结构和物理结构与数据运算之间的关系 1.3抽象…

JMeter+提取token变成全局变量

注&#xff1a;没打码&#xff0c;就代码乱写的接口&#xff0c;具体请按照你要跑的接口来输入值 一、创建线程组 二、配置HTTP请求默认值 IP地址一模一样&#xff0c;可以配置一个默认值&#xff0c;就不用每次都输入IP地址了 三、配置登陆ip 配置登陆地址&#xff0c;通过…

iOS 测试 iOS 端 Monkey 测试

说起 Monkey 测试&#xff0c;大家想到的是 monkey 测试只有安卓有&#xff0c;monkey 测试只针对安卓 app&#xff0c;今天给大家分享一下 Monkey 测试在 iOS 端也能跑&#xff01;iOS 端 app 也能使用 Monkey 测试来执行稳定性测试。 一、环境准备 1、准备 Mac 设备&#x…

物业小区管理系统登录页面以及逻辑实现

学习vue3和springboot那肯定是少不了写项目的&#xff0c;在各个项目中肯定是离不开登录和注册的事情的&#xff0c;这也是一个项目起步的需求。 接下来我们来看看我们所写的项目起步。首先搭建vue3和springboot的项目环境&#xff0c;这些搭建大家自行完成即可&#xff0c;架子…

windows 修改 RDP 远程桌面端口号

打开 PowerShell &#xff0c; 执行regedit 依次展开 PortNumber HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \Terminal Server \WinStations \RDP-Tcp 右边找到 PortNumber &#xff0c;对应修改自己的端口号 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Co…

深度学习:tf.keras实现模型搭建、模型训练和预测

在sklearn中&#xff0c;模型都是现成的。tf.Keras是一个神经网络库,我们需要根据数据和标签值构建神经网络。神经网络可以发现特征与标签之间的复杂关系。神经网络是一个高度结构化的图&#xff0c;其中包含一个或多个隐藏层。每个隐藏层都包含一个或多个神经元。神经网络有多…

echarts3d饼图实现

一、vue中使用3d饼图 效果图&#xff1a; 二、使用步骤 1.引入库 安装echarts 在package.json文件中添加 "dependencies": {"echarts": "^5.1.2""echarts-gl": "^1.1.0",// "echarts-gl": "^2.0.8&quo…

基于AutoEncoder自编码器的MNIST手写数字数据库识别matlab仿真

目录 1.算法理论概述 2.部分核心程序 3.算法运行软件版本 4.算法运行效果图预览 5.算法完整程序工程 1.算法理论概述 MNIST手写数字数据库是机器学习中常用的数据集&#xff0c;包含了0到9这10个数字的手写图片。本文介绍一种基于AutoEncoder自编码器的MNIST手写数字识别算…

高校大数据教材推荐-Hadoop大数据开发基础(第2版)(微课版)

Hadoop大数据开发基础(第2版)(微课版)是“十四五”职业教育国家规划教材&#xff0c;是大数据应用开发“1X”职业技能等级证书配套系列教材&#xff0c;也是“以纸质教材为核心、以互联网为载体”的新形态教材&#xff0c;配套39个微课视频&#xff08;二维码随扫随学&#xff…

DASCTF 2023 0X401七月暑期挑战赛 Reverse部分题解

文章目录 controlflow1. 异或0x4012. 加i*i3. 异或i*(i1)4. 减i5. 乘36. swap7. judge解题脚本 webserver1.关键函数2. 求约束条件3.Z3求解 controlflow 动态调试观察执行情况 1. 异或0x401 2. 加i*i 3. 异或i*(i1) 注意这里是从data[10i]开始 4. 减i 5. 乘3 6. swap 注意…

redis的简单入门

文章目录 一、前言1.1、什么是Redis? 二、简介三、Redis下载与安装四、Redis服务启动与停止五、Redis设置密码进行远程连接5.1、设置密码5.2、远程连接 六、Redis数据类型七、Redis常用命令7.1、字符串String命令7.2、哈希hash操作命令7.3、列表list操作命令7.4、集合set操作命…

机器人SLAM导航学习-All in one

参考引用 张虎&#xff0c;机器人SLAM导航核心技术与实战[M]. 机械工业出版社&#xff0c;2022.本博客未详尽之处可自行查阅上述书籍 一、编程基础篇 1. ROS 入门必备知识 ROS学习笔记&#xff08;文章链接汇总&#xff09; 2. C 编程范式 《21天学通C》读书笔记&#xff0…

leetcode743. 网络延迟时间 DJ

https://leetcode.cn/problems/network-delay-time/ 有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列表 times&#xff0c;表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi)&#xff0c;其中 ui 是源节点&#xff0c;vi 是目标节点&#xff0c; wi 是一个信…

python_day13

reduceByKey算子&#xff0c;聚合 列表中存放二元元组&#xff0c;元组中第一个为key&#xff0c;此算子按key聚合&#xff0c;传入计算逻辑 from pyspark import SparkConf, SparkContext import osos.environ["PYSPARK_PYTHON"] "D:/dev/python/python3.10…

Geriit使用出错记录

拉取服务器代码&#xff08;clone &#xff09; 1、执行&#xff1a;git clone ssh:xxxxxx && scp -p -P 29418 xxxxxxxxx 1、报错&#xff1a;Unable to negotiate with XX.XX.XX.XX port XX:: no matching key exchange method found. Their offer: diffie-hellman…