1

我目前正在使用 Java 开发自己的小型视频游戏,但是到目前为止,当我将 Runnable Jar 文件提供给某人以便他们可以玩时,我必须向他们发送 22 个其他所需的资源文件,并让他们放置它在同一个文件夹中。这非常不方便,我知道有一种方法可以自动将这些资源打包到可运行的 jar 文件中。如果我不能这样做,那么我至少想知道如何访问 Runnable Jar 中的文件,这样我就可以简单地将文件复制粘贴到里面。我已经梳理了互联网,没有任何建议有效。如果我使用以下代码,我可以在 Eclipse 中正确运行程序:

    URL url = this.getClass().getResource("Jugger-Nog.jpg");
         image = ImageIO.read(new File(filePath));
         //image = ImageIO.read(url);

第一行创建了一个 url,这是我在许多网页上阅读的内容,但是使用它并且第三行代码在 JAR 或 Eclipse 中不起作用,但第二行本身在 Eclipse 中可以正常工作。任何想法,因为互联网没有很多。

4

4 回答 4

0

我也遇到了这个问题,但我的解决方案是程序检查是否%app data%/roaming/存在为 myApp 调用的文件夹。如果没有,程序会执行mkdir并创建该文件夹。然后就是让程序知道所有源文件所在的位置。无需曲棍球来处理您的文件。

于 2012-08-03T10:05:04.800 回答
0

你应该使用:

InputStream in = this.getClass().getResourceAsStream("Jugger-Nog.jpg");
image = ImageIO.read(in);
于 2011-07-18T06:55:33.717 回答
0

将 JAR 文件和资源文件放在同一个目录中,而不是将其全部打包在 JAR 中,这很糟糕吗?

您可以将您的游戏打包到安装程序上,该安装程序将所有游戏复制到程序文件夹并放置一些快捷方式。

于 2011-07-18T12:45:06.240 回答
0

设置资源文件夹

您需要做的第一件事是设置资源文件夹。在 Eclipse 中,右键单击您的项目并导航到 New>Folder,随意调用此文件夹。再次右键单击您的项目并导航到“属性”。在此窗口中单击 Java 构建路径,然后单击库选项卡。单击添加类文件夹并选择您之前创建的文件夹。这是您可以放置​​资源文件的地方。

访问您的资源

在您的 Java 代码中,您可以使用以下内容:

%CLASSNAME%.class.getResourceAsStream("/%FILENAME%");

where%CLASSNAME%是您当前所在的类的名称,并且%FILENAME%是您希望访问的文件的名称。这将返回一个InputStream. 如果你想加载一个图像,你可以简单地通过调用来包装它,ImageIO.read(stream)例如:

ImageIO.read(%CLASSNAME%.class.getResourceAsStream("/%FILENAME%"));

另外,请注意斜线出现在您要访问的文件之前,恐怕这是强制性的。

为什么我们不能使用文件

您不能使用 a File,因为它代表文件系统上的实际物理文件,当您将其打包到 jar 中时,它是 jar 文件的一部分,而不是文件系统上的实际文件。

于 2017-07-13T00:23:31.697 回答