我正在做一个简单的游戏。
Eclipse读取文本文件但是当我将项目导出为runnable jar文件时,它不会读取它。
我的资源文件夹如下所示:http://i.stack.imgur.com/LK2SF.png
代码:
BufferedReader br = new BufferedReader(
new FileReader("Resources/LevelManager/LevelManager.txt"));
当我运行runnable jar文件时,我收到此错误:
java.io.FileNotFoundException: Resources\LevelManager\LevelManager.txt (System cant find the path)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at LevelManager.Utils.getLevel(Utils.java:13)
at LevelManager.LevelManager.<init>(LevelManager.java:15)
at State.GameState.<init>(GameState.java:26)
at Main.Game.init(Game.java:54)
at Main.Game.run(Game.java:80)
at java.lang.Thread.run(Unknown Source)`
感谢您的回答。
答案 0 :(得分:1)
这是一个经典错误。
您的应用程序将在自己的jar中运行;这意味着它的资源将包含在jar中,而不能用作File
个对象。您需要使用类加载器。
我不确定你打算如何从资源中读取,但这里是如何从资源中获取流(请注意斜杠用于分隔符,总是:
@WillNotClose //this is a JSR 305 annotation
public static InputStream loadResource(final String resourcePath)
throws IOException
{
final URL url = EnclosingClass.class.getResource(resourcePath);
if (url == null)
throw new IOException(resourcePath + ": resource not found");
return url.openStream();
}