在 Intellij 中构建工件后,Java getResource 找不到文件

标签 java file intellij-idea import

我用过

File file = new File(Game.class.getResource("Tiles.txt").getFile())

从我的资源文件夹中获取txt文件,它在IDE内部工作正常,但是当构建为jar并在环境外部运行时,它会抛出文件未找到错误(我通过在CMD中运行看到了这一点)。

我使用类似的方法来获取所有图像和 Sprite 表:

BufferedImage loadedImage = ImageIO.read(Game.class.getResourceAsStream("EG.png"));

它们在导入文件方面有何不同?为什么我的路径不正确?

错误 CMD 给出: /image/4gEIZ.jpg

C:\Users\Taka\Desktop>java -jar ProjectC-Revamped.jar
java.io.FileNotFoundException: file:\C:\Users\Taka\Desktop\ProjectC-Revamped.jar!\Tiles.txt (The filename, directory name, or volume label syntax is incorrect)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.util.Scanner.<init>(Unknown Source)
        at Tiles.<init>(Tiles.java:16)
        at Game.<init>(Game.java:91)
        at Game.main(Game.java:192)
java.io.FileNotFoundException: file:\C:\Users\Taka\Desktop\ProjectC-Revamped.jar!\Maps\Map.txt (The filename, directory name, or volume label syntax is incorrect)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.util.Scanner.<init>(Unknown Source)
        at Map.<init>(Map.java:20)
        at Game.<init>(Game.java:94)
        at Game.main(Game.java:192)

最佳答案

使用 getResourceAsStream() 而不是 getResource():请参阅此 SO answer了解详情

关于在 Intellij 中构建工件后,Java getResource 找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45374815/

相关文章:

python - 在文件中查找 == x 的行,而不是仅包含 x

python - 用单独的程序替换另一个文件中的文本

c++ - 在 Intellij IDEA for Windows 中配置 C++ SDK

java - IntelliJ 问题 - 无法运行简单的 Spring 应用程序

java - Android 文档列表 查看 XML 格式的示例源代码

java - Netbeans 8.1 Gnome 3 GTK+ UI 字体和标签高度

Android:android.content.res.Resources$NotFoundException:字符串资源 ID #0x5

intellij-idea - 在注释栏中显示全名

java - 如何正确组织类代码?

java - Selenium WebElement.click() 与 Javascript 点击事件