Eclipse从文件读取但Runnable .jar文件没有

时间:2015-07-25 16:08:03

标签: java jar runnable

我正在做一个简单的游戏。

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)`

感谢您的回答。

1 个答案:

答案 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();
}