当前位置: 代码迷 >> java >> Eclipse从文件读取但可运行的.jar文件没有
  详细解决方案

Eclipse从文件读取但可运行的.jar文件没有

热度:91   发布时间:2023-07-17 20:29:18.0

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

Eclipse读取一个文本文件,但是当我将项目导出为可运行的jar文件时,它不会读取它。

我的资源文件夹如下所示: :

编码:

 BufferedReader br = new BufferedReader(
   new FileReader("Resources/LevelManager/LevelManager.txt"));

当我运行可运行的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)`

谢谢您的回答。

这是一个经典的错误。

您的应用程序将在其自己的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();
}
  相关解决方案