这似乎是一个简单的问题,但我似乎找不到任何解决方案,或者我听不懂某些帖子。
我有一个带有一些资源的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");