Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Eclipse中将所有资源打包到可运行的JAR中_Java_Eclipse_Jar_Runnable - Fatal编程技术网

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

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

我目前正在用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,这是我在许多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”);,但请确保图像文件应该位于类的根文件夹中。也许您会发现有帮助?