如何将所有资源打包到Eclipse中的可运行JAR中

时间:2011-07-18 04:25:00

标签: java eclipse jar runnable

我目前正在开发自己的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中。任何想法,因为互联网没有很多。

4 个答案:

答案 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文件的一部分而不是实际的文件你的文件系统。