可执行JAR中缺少文本文件? (Java的Eclipse的)

时间:2011-10-22 22:55:36

标签: java

我正在用Java制作游戏。我加载水平图处理文本文件。文本文件位于workspace / src / resources / sprites / misc / level.txt中。当我从Eclipse编译游戏时,它完美地运行,0个问题。当我将游戏导出到JAR文件或Runnable JAR文件时,如果我打开.jar,游戏窗口会打开并且游戏开始但整个关卡都缺失,主角落到了Limbo。如果在源代码中放入错误的文件路径,则会出现同样的问题。所以我100%的问题是,当我制作JAR文件时,由于某种原因它会弄乱文本文件的路径。这很奇怪,因为玩家的精灵不会发生这种情况!我可以看到它,但我看不到水平。

另外,我像这样加载精灵:

currentSprite = new Sprite(new ImageIcon(getClass().getClassLoader().getResource("sprites/background/pricebox.gif")));

并像这样处理文本文件:

File f = new File("resources/sprites/misc/level.txt");
BufferedReader in = new BufferedReader(new FileReader(f));

可能是什么问题?

谢谢。

2 个答案:

答案 0 :(得分:3)

File表示文件系统上的文件。当它在JAR中时,它不是文件系统上的文件。您希望以加载图像的相同方式加载资源 - 作为类路径资源:

BufferedReader in = new BufferedReader(
    new InputStreamReader(
        getClass().getClassLoader().getResourceAsStream(
            "resources/sprites/misc/level.txt")));

或略微更环形,但更类似于您加载图片的方式:

URL resource = getClass().getClassLoader().getResource(
    "resources/sprites/misc/level.txt");
BufferedReader in = new BufferedReader(
    new InputStreamReader(resource.openStream()));

答案 1 :(得分:0)

也许这会对你有所帮助

http://www.javaworld.com/javaworld/javatips/jw-javatip49.html

另请参阅文件分隔符以指定文件分隔符斜杠。