首页 > 其他分享 >多模块项目中,模块的某个类的主方法和测试方法,他们文件访问的相对路径的根目录不同

多模块项目中,模块的某个类的主方法和测试方法,他们文件访问的相对路径的根目录不同

时间:2024-09-03 18:46:51浏览次数:12  
标签:路径 Properties 文件夹 相对路径 模块 根目录 properties 测试方法

遇到问题

在编写某个多模块项目的某个类时,在方法中使用Properties读取配置文件,出现的错误。
这里假定项目名为project,模块名为modular。

import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class APP{
    public static void main(String[] args) throws IOException {
        Properties properties = new Properties();
        properties.load(
                new FileInputStream("modular/src/main/resources/dataBase.properties")); //modular是当前模块名
        System.out.println(properties.getProperty("Driver"));
    }
    @Test
    public void quick()throws IOException{
        Properties properties = new Properties();
        properties.load(
                new FileInputStream("modular/src/main/resources/dataBase.properties"));
        System.out.println(properties.getProperty("Driver"));
    }
}

具体过程如下:

最开始,我在主方法中使用 Properties 来获取配置文件,使用路径如上,我成功的读取到了配置文件信息。
然后我又在测试方法中使用完全相同的代码,结果却发现 java.io.FileNotFoundException 异常,这实在太奇怪了,为什么完全相同的代码却会发生问题?
既然主方法读的到配置文件,那么说明文件路径没问题,可是测试方法却爆出这个问题,说明路径有问题,完全相同的代码,为啥变位置路径就出错了?

解决尝试

首先我是认为是不是本类导入了什么错的包,于是在当前模块下建了一个新的类,并只写入了以上的两个方法,且只引入相关必须包。结果发现问题任然存在。
然后我怀疑这是不是项目结构或者内部类路径本身出了问题?我就新建了一个项目,并把上面重写的的新类复制进去,结果发现运行成功了。

百思不得其解,我突然意识到,会不会是测试方法的路径真的有问题?即主方法和测试方法访问文件时使用的相对路径的默认根路径不同?
于是我做这样的测试:在主方法和测试方法中都写入

        File file = new File("测试用文件夹");
        file.mkdir();

运行这个代码,会在默认的根目录下生成一个新的文件夹。
果然!
运行主方法,生成的文件夹在项目文件夹下,和模块文件夹同级!
运行测试方法。生成的文件夹在模块文件夹下,和src文件夹同级!!

所以说 多模块项目中,模块的某个类的主方法和测试方法,他们文件访问的相对路径的根目录不同

问题解决

只要把测试方法中的路径改成 src/main/resources/dataBase.properties 问题就解决了

然而我还是不知道这是为什么?这里就先记下来。

标签:路径,Properties,文件夹,相对路径,模块,根目录,properties,测试方法
From: https://www.cnblogs.com/Akiyama-tsuki/p/18395197

相关文章

  • Python模块之functools.partial
    在Python编程中,functools.partial是一个强大的工具,它提供了一种部分应用函数的方式,能够在创建新函数时固定部分参数,从而在后续调用中减少需要传递的参数数量。本文将深入介绍functools.partial的基本概念、使用方法,并通过丰富的示例代码演示其在不同场景中的实际应用。什么是functo......
  • 低功耗蓝牙模块在工业4.0中的角色:实现智能工厂的关键
    在当今高速发展的工业自动化时代,无线通信技术的应用越来越广泛,而蓝牙模块作为一种成熟且高效的无线通信手段,正在工业自动化中扮演着越来越重要的角色。本文将详细探讨蓝牙模块在工业自动化中的应用场景、优势以及未来发展前景。蓝牙模块在工业自动化中的应用场景1、设备监控与数据......
  • 基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不
    1.算法仿真效果       本系统在以前写过的QPSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的QPSK误码情况。 vivado2019.2仿真结果如下(完整代码运行后无水印): SNR=15DB   SNR=10DB   SNR=5DB   SNR=1DB ......
  • 基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不
    1.算法仿真效果本系统在以前写过的QPSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的QPSK误码情况。vivado2019.2仿真结果如下(完整代码运行后无水印):SNR=15DBSNR=10DBSNR=5DBSNR=1DB系统RTL结构图:2.算法涉及理论知识概要QPSK是一种数......
  • Python的模块与库(-白夜黑羽)
    1.模块的概念作为一名合格的程序员,我们编写的代码不可能都放在一个Python文件中,有时候我们开发的项目比较复杂时,编写的代码可能要上万行,甚至更多,如果全部都放在一个文件里,显然是不合理的。不同的文件中的代码含义不同,功能也不同,最后整个项目的运行都离不开它们,在Python中......
  • ​​【信创】统信UOS1070根目录占满后无法进入系统的解决方法​​
    原文链接:【信创】统信UOS1070根目录占满后无法进入系统的解决方法Hello,大家好啊!今天给大家带来一篇关于统信UOS1070桌面操作系统中,根目录被占满后导致无法进入系统的解决方法的文章。在Linux系统中,根目录(/)空间被占满可能导致系统无法正常启动或运行,这种情况可能发生在日志文件过多......
  • 芋道源码微服务新建新的模块及代码生成器使用
    目录概述实践新建模块代码生成配置数据源代码生成拷贝代码pom.xml其它的问题redis权限配置效果结束概述  芋道源码微服务新建新的模块及代码生成器使用。主要分三块,建立新的模块,代码生成及运行过程中的问题解决。实践新建模块  参考芋道源码本身的架构,新......
  • odoo社区版 文档管理及电子表格模块
    该模块从企业版移植,完全保留了企业版现有的文档模块功能,电子表格功能。可以对文件,附件在线分类管理,预览,在线创建电子表格模版,从任意模型加载数据,支持excel样式,公式在线编辑,下载到本地。......
  • Python中,使用`sklearn.preprocessing`模块中的`StandardScaler`或`MinMaxScaler`可以
    在Python中,使用`sklearn.preprocessing`模块中的`StandardScaler`或`MinMaxScaler`可以对数据进行标准化或归一化处理。以下是如何对一个列表(list)中的数据进行标准化的示例:第一结合numpy###使用StandardScaler进行标准化(Z-scorenormalization)`StandardScaler`将数据转换为均值......
  • PyTorch构建模型训练模块
    前面几篇分别是数据导入模块,模型类的构建模块,损失函数模块,优化器模块,上述模块搭建好后建立训练模块,将上述几个模块在训练模块中调用完成训练。这个不太好解释直接看模块示例: 上面是训练模块,分别传入训练总轮次steps,实例化模型model,损失函数loss_func,但是下面训练的时候它将损......