这似乎是一个简单的问题,但我似乎找不到任何解决方案,或者我听不懂某些帖子。

我有一个带有一些资源的Maven项目,位于“ / src / main / resources /”文件夹下。使其成为text.txt文件。有人告诉我,放置到该文件夹​​中或pom.xml文件中声明的任何文件夹中的所有文件都将放置在“ /”(项目根文件夹,解压缩独立jar文件时可以看到此文件)中。已将其编译到工作罐中。

因此,按照这种逻辑,当Maven将其打包到jar中时,我应该能够通过“ text.txt”访问文件。但这意味着IntelliJ在“ /src/main/resources/text.txt”处无法看到“ text.txt”处的文本文件。我是否完全理解打包过程以及应该在代码中放入哪条路径?

在此先感谢您。



编辑:

正如某些人指出的那样,我需要对此更加具体。

因此,假设我在src / main / java // Main.java中拥有Main.java,下面是其中的代码:

import java.io.*;
import java.nio.file.Files;

public class Main {
    public static void main(String[] args) throws IOException {
        //stub
        System.out.println("Entered the program");
        File file=new File("src/main/resources/text.txt");
        System.out.println("String in text file: " + new String(Files.readAllBytes(file.toPath())));
    }
}


我在src / main / resources / text.txt中也有text.txt文件

当我按Shift + F10时,它编译并运行正常(类似于按“运行”按钮)

这是我的POM文件的一部分:



<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.n157239.maven_rss.Main</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>





然后运行mvn clean compile assembly:single,以便Maven可以生成一个独立的jar文件,其中的target /中有相关性。

当我从命令行运行jar文件时,出现错误消息,提示没有text.txt文件。

即使当我将Java代码更改为File file=new File("text.txt");时,从命令行运行jar时仍然会出现错误。

最佳答案

如果将文件放在/src/main/resources/中,则只需指定文件名即可读取
this.getClass().getClassLoader().getResourceAsStream("YourFile");

09-11 03:33
查看更多