可执行JAR中缺少文本文件?(Java Eclipse)
我正在用Java做一个游戏。我加载了一个处理文本文件的标高图。文本文件位于workspace/src/resources/sprites/misc/level.txt中。当我从Eclipse编译游戏时,它工作得非常完美,没有任何问题。当我将游戏导出到JAR文件或可运行的JAR文件中时,如果打开.JAR,游戏窗口将打开,游戏开始,但缺少整个关卡,主角将陷入困境。如果在源代码中输入了错误的文件路径,也会出现同样的问题。所以我百分之百的担心,问题是当我创建JAR文件时,由于某种原因,它会弄乱文本文件的路径。这很奇怪,因为它不会发生在玩家的精灵身上!我能看到,但我看不到水平 此外,我加载精灵的方式如下:可执行JAR中缺少文本文件?(Java Eclipse),java,Java,我正在用Java做一个游戏。我加载了一个处理文本文件的标高图。文本文件位于workspace/src/resources/sprites/misc/level.txt中。当我从Eclipse编译游戏时,它工作得非常完美,没有任何问题。当我将游戏导出到JAR文件或可运行的JAR文件中时,如果打开.JAR,游戏窗口将打开,游戏开始,但缺少整个关卡,主角将陷入困境。如果在源代码中输入了错误的文件路径,也会出现同样的问题。所以我百分之百的担心,问题是当我创建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));
并按如下方式处理文本文件:
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));
有什么问题吗
谢谢。A表示文件系统中的一个文件。当它在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()));
表示文件系统上的文件。当它在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()));
也许这对你有帮助
另外,有关指定文件分隔符斜杠的信息,请参见文件分隔符 也许这对你有帮助
另外,有关指定文件分隔符斜杠的信息,请参见文件分隔符 您是否检查过您的txt文件是否存在于您的jar中?您是否在导出对话框中选择了所有需要的资源(对于普通的jar导出)?是的,我用WinRAR打开了.jar,level.txt文件就在它应该在的地方…您是否检查了您的txt文件是否存在于您的jar中?您是否在导出对话框中选择了所有需要的资源(用于正常的jar导出)?是的,我用WinRAR打开了.jar,level.txt文件就在应该的位置…我理解您所说的和我犯的错误。我对它进行了测试,编译时它仍能正常工作,但问题仍然存在。那么,您的路径就错了。你确定它不应该是“sprites/misc/level.txt”吗?我明白你说的话和我犯的错误。我对它进行了测试,编译时它仍能正常工作,但问题仍然存在。那么,您的路径就错了。你确定它不应该是“sprites/misc/level.txt”吗?