【问题标题】:Issue while picking file from main/resource folder of maven folder structure从 maven 文件夹结构的主/资源文件夹中选择文件时出现问题
【发布时间】:2020-01-07 23:06:45
【问题描述】:

我正在尝试从 src/main/resources 文件夹中获取文件。 早些时候它工作正常,但最近它开始从某个目标位置(target/classes/filename.xml)挑选该文件(我没有在目标文件夹中创建该文件)。

File xmlFile = new File(ReadXMLFile.class.getClassLoader().getResource(“filename.xml”).toURI());

我正在尝试的代码是:

 File xmlFile = new File(ReadXMLFile.class.getClassLoader().getResource(“filename.xml”).toURI()); 

预期:它应该从 src/main/resources/filename.xml 中选择文件 实际:它正在从 target/classes/filename.xml 中选择文件

附加信息: 我的代码在ReadXMLFile.xml 及其下面的文件夹结构下 com.qa.smartcomm.util 读取XMLFile.xml

有人可以帮我解决这个问题吗?

【问题讨论】:

  • Target文件夹是maven自动创建的,每次运行clean命令都会重新创建一个新的。

标签: java maven


【解决方案1】:

确保你有如下结构(模块):

├── src
│   └── main
│       ├── java
│       │   └── somepackage
│       │       └──Main.java
│       │           
│       │               
│       │              
│       └── resources
│           └── filename.xml
└── pom.xml

File xmlFile = new File(String.valueOf(getClass().getClassLoader().getResourceAsStream("filename.xml")));

【讨论】:

    【解决方案2】:

    目标文件夹由 maven 自动生成。它将资源从 src/main/resources 复制到 target/classes/ 以及从 src/main/java 编译的 java 类。

    如果你运行你的程序target/classes是你的根classloader

    【讨论】:

    • 好的。感谢您的澄清。两者都有不同的版本。我在 src/main/resources/filename.xml 中所做的更改有时不会反映在 target/classes/filename.xml 中,因此会导致问题
    • 如何确保两个文件夹结构具有相同的版本?
    • 如果您执行包含目标资源的阶段,则默认情况下从 maven 完成:例如 mvn install 的资源应该完成这项工作。或者您可以通过键入 mvn resources:resources 来执行目标手册
    • 如果您接受答案会很好,因为我需要一些要点:-)
    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2012-08-16
    • 2014-04-07
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2016-08-06
    • 2019-10-16
    相关资源
    最近更新 更多