我目前正在开发自己的Java小视频游戏,但截至目前,当我将Runnable Jar文件提供给某人以便他们可以播放时,我必须向他们发送22个其他所需的资源文件,并且他们把它放在同一个文件夹中。这是令人难以置信的不方便,我知道有一种方法可以自动将这些资源打包到runnable jar文件中。如果我不能这样做,那么我想至少知道如何访问Runnable Jar中的文件,所以我可以简单地复制粘贴里面的文件。我已经梳理了互联网,没有任何建议。如果我使用这段代码,我可以在eclipse中正确运行程序:
URL url = this.getClass().getResource("Jugger-Nog.jpg");
image = ImageIO.read(new File(filePath));
//image = ImageIO.read(url);
第一行创建了一个url,这是我在许多网页上读到的,但使用它和第3行代码在JAR或Eclipse中不起作用,但第二行本身就可以正常工作在Eclipse中。任何想法,因为互联网没有很多。
答案 0 :(得分:0)
您应该使用:
InputStream in = this.getClass().getResourceAsStream("Jugger-Nog.jpg");
image = ImageIO.read(in);
答案 1 :(得分:0)
将JAR文件和资源文件放在同一目录中,而不是将所有内容打包到JAR中是不是很糟糕?
您可以将游戏打包到安装程序上,然后将其全部复制到程序的文件夹中并放置一些快捷方式。
答案 2 :(得分:0)
我也遇到了这个问题,但我的解决方案是程序会检查%app data%/roaming/
中是否存在调用myApp的文件夹。如果不是,则程序执行mkdir
并创建该文件夹。然后它只是让程序知道所有源文件所在的位置。没有必要用你的文件来嬉戏。
答案 3 :(得分:0)
您需要做的第一件事是设置资源文件夹。在Eclipse中,右键单击项目并导航到New> Folder,然后根据需要调用此文件夹。再次右键单击项目并导航到“属性”。在此窗口中单击Java Build Path,然后单击Libraries选项卡。单击添加类文件夹,然后选择您之前创建的文件夹。这是您可以放置资源文件的地方。
在Java代码中,您可以使用以下内容:
%CLASSNAME%.class.getResourceAsStream("/%FILENAME%");
其中%CLASSNAME%
是您当前所在班级的名称,%FILENAME%
是您要访问的文件的名称。这将返回InputStream
。如果您希望加载图像,只需通过调用ImageIO.read(stream)
来包装它,例如:
ImageIO.read(%CLASSNAME%.class.getResourceAsStream("/%FILENAME%"));
另外,请注意您要访问的文件前面的斜杠,这是强制性的我害怕。
您不能使用File
,因为它代表了文件系统上的实际物理文件,当您将其打包到jar中时,它是jar文件的一部分而不是实际的文件你的文件系统。