java - Maven 和 IntelliJ 资源
问题描述
这似乎是一个简单的问题,但我似乎找不到任何解决方案,或者我不理解我读过的一些帖子。
我有一个包含一些资源的 Maven 项目,位于“/src/main/resources/”文件夹下。让它成为一个 text.txt 文件。有人告诉我,我放入该文件夹或 pom.xml 文件中声明的任何文件夹中的任何文件都将放在“/”中(项目根文件夹,当您解压缩独立 jar 文件时可以看到)已将其编译为工作 jar。
因此,按照这种逻辑,当 Maven 将其打包到 jar 中时,我应该能够通过“text.txt”访问这些文件。但这样做意味着 IntelliJ 看不到“text.txt”处的文本文件,因为它位于“/src/main/resources/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");
推荐阅读
- javascript - 延迟更改颜色两次的问题
- java - JMeter 测试日期 - 生成和发送日期 - 通过 http 协议发送并通过 websocket 接收
- python - 编程嵌套 numba.cuda 函数调用
- xquery - eXist-db - 包含模板导致基数不匹配,拒绝作为二进制资源
- firebase - Xamarin.GooglePlayservices.Basement 与 netstandard2.0 不兼容
- c - 在指向 char 的指针数组中输入单词时出错
- javascript - 嵌套归约函数/递归/函数式编程/树遍历
- regex - 使用 nginx 阻止某些带有正则表达式的请求在位置不起作用
- angular - Angular 6:无法绑定到“上传者”
- bash - 如何将变量传递给bash中的命令