我用过
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/