我正在用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));
可能是什么问题?
谢谢。
答案 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)