当我从eclipse运行我的程序时,它显示正常,来自Resources \的图像显示,来自同一地方的声音,以及文本文件被正确找到。但是,当我导出我的jar并使用7Zip将资源复制到其中时,图像将起作用,但是声音和文本文件无法找到,即使它们位于同一文件夹中,使用相同的路径在我的代码中找到它们。我可以通过在名为Resources的jar文件旁边放一个文件夹并将所有内容放在那里来解决这个问题,但是我想知道为什么只将它放在jar文件中才能用于图像,以及我如何将它放到使用文本和音频文件。 一个例子,向您展示我的意思:
File inventory = new File("Resources/inv.txt");
threadpath = "Resources/threads.wav";
enemy1 = new Sprite(new Texture("Resources/miniForestGolem.png"));
当我在eclipse中运行它时,这三个工作正常,但是当我导出它,并将资源文件夹放在jar文件中时,只有图像有效。
修改
我知道如何包含我的资源,并且已经这样做了,我问的是如何/为什么某些资源无法访问,即使在添加它们之后也是如此。< / p>
答案 0 :(得分:1)
好的,从您的评论中我们可以推断出从eclipse执行它和从.jar执行它之间的区别。
new File(...)
在Resources / 让它成功的方法是下一步:
File
个对象,而是使用InputStreams
。获得后,将所有资源检索为从类路径中获取的InputStream。如果您在MyClass.java中,请执行以下操作:MyClass.class.getClassLoader().getResourceAsStream("Resources/inv.txt")
等。您通过这样做获得了什么:代替在实际操作系统文件上构建的File
个对象,您将直接从java应用程序类路径中检索InputStreams
读取。这样,您可以将它们打包到jar中,或者打包到Web应用程序内的WEB-INF / classes目录中,或者打包到某些应用程序服务器中的库文件夹...只要它进入应用程序类路径就可以。如果我必须以便携和可用的方式打包您的应用程序,我会这样做。