使用 maven 构建后未找到来自 src/main/资源的资源

2022-08-31 16:06:09

您好,我正在我的java应用程序中使用来自src / main /resources的配置文件。我在课堂上读到它,就像这样:

new BufferedReader(new FileReader(new File("src/main/resources/config.txt")));

所以现在我正在用 maven 使用 .这是我的pom中的位.xml:mvn assembly:assembly

<plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <finalName>TestSuite</finalName>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.some.package.Test</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

因此,当我运行我的应用程序时,我收到此错误:

src\main\resources\config.txt (The system cannot find the path specified)

但是当我右键单击我组装好的罐子时,我可以看到它里面,有人知道我做错了什么吗?


答案 1

来自 的资源将放在类路径的根目录上,因此您需要将资源获取为:src/main/resources

new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/config.txt")));

您可以通过查看 maven 生成的 JAR/WAR 文件进行验证,就像您在归档文件的根目录中找到的那样。config.txt


答案 2

FileReader 从文件系统上的文件读取。

也许您打算使用类似这样的东西从类路径加载文件

// this will look in src/main/resources before building and myjar.jar! after building.
InputStream is = MyClass.class.getClassloader()
                     .getResourceAsStream("config.txt");

或者,您可以在读取文件之前从jar中提取文件。


推荐