【问题标题】:How to package all resources into runnable JAR in Eclipse如何在 Eclipse 中将所有资源打包成可运行的 JAR
【发布时间】:2011-10-07 09:38:49
【问题描述】:

我目前正在使用 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 中不起作用,但第二行本身就可以正常工作在日食中。任何想法,因为互联网没有很多。

【问题讨论】:

  • 你可以使用 URL url =Thread.currentThread().getContextClassLoader().getResource("Jugger-Nog.jpg");,但要确保图片文件应该在您班级的根文件夹中。
  • 也许你会发现this answer 有帮助?

标签: java eclipse jar runnable


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你应该使用:

      InputStream in = this.getClass().getResourceAsStream("Jugger-Nog.jpg");
      image = ImageIO.read(in);
      

      【讨论】:

        【解决方案4】:

        设置资源文件夹

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

        访问您的资源

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

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

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

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

        另外,请注意要访问的文件前面的斜杠,恐怕这是强制性的。

        为什么我们不能使用文件

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-17
          • 2017-12-17
          • 2012-02-21
          • 2019-06-18
          • 2018-04-16
          • 1970-01-01
          • 2011-11-07
          • 2012-02-23
          相关资源
          最近更新 更多