Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven项目没有';t将文件放在类路径上的src/main/resources中_Java_Eclipse_Maven_Classpath - Fatal编程技术网

Java Maven项目没有';t将文件放在类路径上的src/main/resources中

Java Maven项目没有';t将文件放在类路径上的src/main/resources中,java,eclipse,maven,classpath,Java,Eclipse,Maven,Classpath,我在Eclipse中有一个java项目。我想要某个文件夹中的已读文件。我使用以下代码: File file = new File("directory/filename.txt"); 如果我有一个简单的java项目,使用以下布局: Project | +- src +- lib +- directory | + filename.text 代码运行良好,我可以读取文件。如果我现在将此项目转换为maven项目,则Eclipse中除了pom.xml文件和目标文件夹外没有太多更改(重新

我在Eclipse中有一个java项目。我想要某个文件夹中的已读文件。我使用以下代码:

File file = new File("directory/filename.txt");
如果我有一个简单的java项目,使用以下布局:

Project
|
+- src
+- lib
+- directory
   |
   + filename.text
代码运行良好,我可以读取文件。如果我现在将此项目转换为maven项目,则Eclipse中除了pom.xml文件和目标文件夹外没有太多更改(重新调整以前隐藏的“bin”输出文件夹,该文件夹现在是常规文件夹。布局变为:

Project
|
+- src
+- lib
+- bin
+- target
+- directory
|  |
|  + filename.text
+- pom.xml
Project
|
+- src/main/java
+- src/main/resources
|   |
|   + filename.text
+- src/test/java
+- src/test/resources
+- lib
+- bin
+- target
+- pom.xml
因为我想使用maven项目设置,所以我删除了src文件夹,并在Eclipse中向我的项目添加了4个新的源文件夹:

我将
filename.text
复制到resources文件夹,该文件夹应自动将其内容放在类路径上。我的项目布局为:

Project
|
+- src
+- lib
+- bin
+- target
+- directory
|  |
|  + filename.text
+- pom.xml
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("src/main/resources/filename.txt");
注意:我运行代码的方式是将其作为java项目在eclipse中运行

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

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

关于您的项目:

右键单击>属性>Java构建路径>源代码:如果您有以下内容:

右键单击>属性>展开组件:检查您是否有以下内容:


希望这能有所帮助。

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