【问题标题】:Maven project doesn't put files in src/main/resources on classpathMaven 项目不会将文件放在类路径上的 src/main/resources 中
【发布时间】:2015-12-01 12:30:40
【问题描述】:

我在 Eclipse 中有一个 java 项目。我想要一个位于某个文件夹中的读取文件。我使用此代码:

File file = new File("directory/filename.txt");

如果我有一个简单的 java 项目,使用这个布局:

Project
|
+- src
+- lib
+- directory
   |
   + filename.text

代码运行良好,我可以读取文件。如果我现在将此项目转换为 maven 项目,除了 pom.xml 文件并添加了一个目标文件夹之外,Eclipse 中没有太大的变化(revaling 以前隐藏的“bin”输出文件夹,现在是一个常规文件夹。布局变为:

Project
|
+- src
+- lib
+- bin
+- target
+- directory
|  |
|  + filename.text
+- pom.xml

因为我想使用maven项目设置,所以我把src文件夹去掉了,在Eclipse中给我的项目添加了4个新的源文件夹:

我将filename.text 复制到资源文件夹,它应该自动将其内容放在类路径中。我的项目布局变成:

Project
|
+- src/main/java
+- src/main/resources
|   |
|   + filename.text
+- src/test/java
+- src/test/resources
+- lib
+- bin
+- target
+- pom.xml

现在我注意到这段代码不起作用(NoSuchFileException)

File file = new File("filename.txt");

但是这段代码确实有效:

File file = new File("src/main/resources/filename.txt");

注意:我运行代码的方式是在 Eclipse 中将其作为 java 项目运行。文件读取代码是我的主类的 main 方法中的一行。

我想知道我错过了什么配置,以便 eclipse/maven 将 src/main/resources 文件夹视为我的类路径的根目录,而不仅仅是我必须明确命名的随机文件夹。这特别奇怪,因为资源文件夹中的另一个文件,即 log4j.properties,被我的 log4j 库找到并使用,没有任何问题。

注意:如果我构建项目并将其安装在本地存储库中,我实际上可以看到两个文件(filename.txt 和 log4j.properties)都整齐地位于目标/类下。

【问题讨论】:

  • 如果你想从类路径中读取一个文件,你必须将它用作资源。如果你想从文件系统中读取它,你必须提供一个实际的路径。
  • @Dave Newton:如何将文件用作资源?

标签: java eclipse maven classpath


【解决方案1】:

关于你的项目:

右键单击 > 属性 > Java 构建路径 > 源代码:如果你有类似的东西:

右键单击>属性>部署程序集:检查您是否有类似的东西:

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2015-05-07
    相关资源
    最近更新 更多