Java 如何在Maven项目中获取资源文件的相对路径?

Java 如何在Maven项目中获取资源文件的相对路径?,java,maven,Java,Maven,我的项目使用Maven,有点复杂。我似乎无法获取资源文件的相对路径。 结构如下: project_folder |-package1 |-src |-test |-java |-folder1 |-folder2 ... |-foldern

我的项目使用Maven,有点复杂。我似乎无法获取资源文件的相对路径。 结构如下:

project_folder
    |-package1
       |-src
          |-test
              |-java
                |-folder1
                  |-folder2
                     ...
                       |-foldern
                           |-**myfile**

              |-resources
                |-folder
                  |-**targetfile**

test
中,有一个
java
文件夹和一个
resources文件夹
myfile
位于
java
文件夹的深处。因此,在
myfile
中,我想引用
目标文件的相对路径。路径是什么?

假设您没有更改测试源和资源位置的默认值:

MyFile.class.getResourceAsStream("../../../folder/targetfile");
用N
“./”
代替3。当然,这样做更容易:

MyFile.class.getResourceAsStream("/folder/targetfile");

pom位于何处?是否有任何配置可更改默认测试源和测试资源目录?请参阅何处?来自Java类,例如classloader?来自shell脚本?从Maven Pom.xml?在项目文件夹下有一个Pom文件,在put函数中我引用的每个包下都有一个Pom文件,所以我需要一个字符串。Thanks我在put方法中使用相对路径,所以我只能在这个函数中传递一个字符串,所以这个相对路径有任何字符串形式吗?感谢
“../../../../folder/targetfile”
和N
“../”
可能会起作用,但传递给
put()
的值如何使用?为什么路径必须是相对的呢?因为我正在本地机器上做一些开发,但是我会把它上传到我们的服务器上,所以我需要一个相对的路径。因为myfile上面有这么多文件夹,所以可能有8个../所以我想知道有没有更短的表达式。谢谢
MyFile.class.getResource(“/folder/targetfile”).toString()
应在开发人员计算机和服务器上返回文件的正确路径(假设您在两台计算机上都从源代码运行)。如果从jar运行,则应使用
getResourceAsStream()
创建
InputStream
来读取文件。