使用mvn exec:java时,如何将src/main/resources添加到类路径中

use*_*555 9 java maven

我正在尝试运行以下应用程序尝试src/main/resources/test.txt从类路径加载文件():

package com.example;

public class Main {
    public static void main(String[] args) {
        System.out.println(Main.class.getResource("test.txt"));
    }
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时mvn exec:java -Dexec.mainClass=com.example.Main,我会null在命令行打印出来.

那么如何将src/main/resources中的文件添加到类路径中?请注意,我跑了mvn package,检查了生成的target/test.jar,并确认它包含test.txt在顶层.

Wer*_*rås 6

斜线应解决它

System.out.println(Main.class.getResource("/test.txt"));
Run Code Online (Sandbox Code Playgroud)

如果您将test.txt文件放在以下位置,您的代码将起作用:

src/main/resources/com/example
Run Code Online (Sandbox Code Playgroud)

  • 如果将test.txt放入com/example包中,它将无法工作.为了使其正常工作,您需要将test.txt放入src/main/resources中. (2认同)
  • 好的.我想我现在明白了.所以`getResource`解释相对于类实例的路径(因为`main`在`com.example`中我不小心找了`src/main/resources/com/example/test.txt`而不是`src/main /资源/ test.txt`) (2认同)