Java 如何在Eclipse中将所有资源打包到可运行的JAR中
我目前正在用Java开发我自己的小游戏,但到目前为止,当我将Runnable Jar文件提供给某人以便他们可以玩时,我必须向他们发送其他22个所需的资源文件,并让他们将其放在同一文件夹中。这非常不方便,我知道有一种方法可以自动将这些资源打包到可运行的jar文件中。如果我不能做到这一点,那么我想至少知道如何访问Runnable Jar中的文件,这样我就可以简单地复制粘贴其中的文件。我浏览过互联网,没有任何建议奏效。如果使用以下代码,我可以在eclipse中正确运行程序:Java 如何在Eclipse中将所有资源打包到可运行的JAR中,java,eclipse,jar,runnable,Java,Eclipse,Jar,Runnable,我目前正在用Java开发我自己的小游戏,但到目前为止,当我将Runnable Jar文件提供给某人以便他们可以玩时,我必须向他们发送其他22个所需的资源文件,并让他们将其放在同一文件夹中。这非常不方便,我知道有一种方法可以自动将这些资源打包到可运行的jar文件中。如果我不能做到这一点,那么我想至少知道如何访问Runnable Jar中的文件,这样我就可以简单地复制粘贴其中的文件。我浏览过互联网,没有任何建议奏效。如果使用以下代码,我可以在eclipse中正确运行程序: URL url =
URL url = this.getClass().getResource("Jugger-Nog.jpg");
image = ImageIO.read(new File(filePath));
//image = ImageIO.read(url);
第一行创建了一个url,这是我在许多web页面上看到的,但是使用它和第三行代码在JAR或Eclipse中都不起作用,但是第二行本身在Eclipse中也可以正常工作。任何想法都可以,因为互联网上的想法并不多。你应该使用:
InputStream in = this.getClass().getResourceAsStream("Jugger-Nog.jpg");
image = ImageIO.read(in);
把JAR文件和资源文件放在同一个目录中,而不是把它们全部打包在JAR中,这有多糟糕
你可以将游戏打包到一个安装程序上,该安装程序会将所有游戏复制到程序的文件夹中,并设置一些快捷方式。我也有这个问题,但我的解决方案是,程序会检查为myApp调用的
%app data%/roaming/
文件夹是否存在。如果没有,程序将执行一个mkdir
,并创建该文件夹。然后让程序知道所有源文件所在的位置。不需要用你的文件到处乱扔曲棍球。设置资源文件夹
您需要做的第一件事是设置一个资源文件夹。在Eclipse中,右键单击项目并导航到New>Folder,可以随意调用该文件夹。再次右键单击项目并导航到属性。在此窗口中,单击Java构建路径,然后单击库选项卡。单击“添加类文件夹”,然后选择先前创建的文件夹。这是您可以放置资源文件的地方
访问您的资源
在Java代码中,可以使用以下内容:
%CLASSNAME%.class.getResourceAsStream("/%FILENAME%");
其中,%CLASSNAME%
是您当前所在的类的名称,%FILENAME%
是您希望访问的文件的名称。这将返回一个InputStream
。如果您希望加载图像,只需调用ImageIO.read(stream)
即可将其包装,例如:
ImageIO.read(%CLASSNAME%.class.getResourceAsStream("/%FILENAME%"));
另外,请注意,斜杠在您要访问的文件之前,恐怕是强制性的
为什么我们不能使用文件
您不能使用文件
,因为它表示文件系统上的实际物理文件,当您将其打包到jar中时,它是jar文件的一部分,而不是文件系统上的实际文件。您可以使用URL URL=Thread.currentThread().getContextClassLoader().getResource(“Jugger Nog.jpg”);,但请确保图像文件应该位于类的根文件夹中。也许您会发现有帮助?