1

我正在尝试使用从文件读取的 MAVEN 构建一个非常小的程序,但我显然做错了,因为它给了我 FileNotFoundException。

这是我的目录结构的样子:

my-app
      src
         main|
             |
             |--java|
             |      |
             |      Main.java
             |
             |--resources|
                         |
                         res.txt

res.txt 包含一些我想从 Main.java 读取的字符串

...
File file = new File("res.txt");
FileReader fr= new FileReader(file);
BufferedReader br = new BufferedReader( fr);
...

我编译它: C:\my-app mvn package

它在目标下创建 jar。当我在罐子里窥视时,我看到它包含 Main.class 和 res.text彼此相邻。(在同一目录下)

尽管如此,当我尝试运行它时:
java -cp target/my-app-1.0-SNAPSHOT.jar Main

我给了我的 FileNotFoundException,Main.class 不知何故看不到 res.txt 文件。为什么?我应该把 res.txt 放在哪里?我还应该配置什么?

任何帮助将不胜感激。

4

3 回答 3

0

我假设 .txt 文件被复制到目标文件夹和 jar 文件的一部分?

在这种情况下,使用资源加载器从类路径而不是文件系统中检索它。

有关如何加载文件的一些示例,请参阅类路径中的读取文件。

于 2012-05-10T13:17:02.547 回答
0

你可以试试

File file = new File(this.getClass().getResource("/res.txt").getFile());

甚至

File file = new File(this.getClass().getResource("/res.txt").toURI());
于 2012-05-10T13:19:43.747 回答
0

InputStream TokenStream = this.getClass().getResourceAsStream("/files/Token.xlsx");

XSSFWorkbook wb = new XSSFWorkbook(TokenStream);

XSSFSheet 表 = wb.getSheetAt(0);

这适用于读取excel文件

于 2018-08-20T20:32:33.673 回答