Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 我可以将整个应用程序放在一个JAR文件中吗?_Java_Swing_Jar_Executable Jar_Embedded Resource - Fatal编程技术网

Java 我可以将整个应用程序放在一个JAR文件中吗?

Java 我可以将整个应用程序放在一个JAR文件中吗?,java,swing,jar,executable-jar,embedded-resource,Java,Swing,Jar,Executable Jar,Embedded Resource,我不太明白Swing应用程序的创建实际上是如何工作的。 我创建了一个简单的应用程序,可以从路径中获取背景图像 ImageIcon imageIcon = new ImageIcon("C:\\Java\\ApplicationName\\out\\Resourses\\backGround.jpg"); Image image = imageIcon.getImage(); // Создание картинки из него Image temp = image.get

我不太明白Swing应用程序的创建实际上是如何工作的。 我创建了一个简单的应用程序,可以从路径中获取背景图像

ImageIcon imageIcon = new ImageIcon("C:\\Java\\ApplicationName\\out\\Resourses\\backGround.jpg");
Image image = imageIcon.getImage(); // Создание картинки из него
Image temp = image.getScaledInstance(500,500,Image.SCALE_SMOOTH); 
imageIcon = new ImageIcon(temp);
g2d.drawImage(temp,0,0,null);
它可以工作,所以我决定使JAR文件独立于Java文件夹中的更改(如删除此图像),并将图像放入src-images(包)中。我不知道这是否可能

我开始得到这样的背景图像

ImageIcon imageIcon = new  ImageIcon(this.getClass().getResource("/images/backGround.jpg")); 
这个程序在IntelliJ IDEA中运行得很好,但是如果我将它提取到JAR文件中,就会得到一个空白的背景屏幕。为什么呢


我可以在一个JAR文件中包含整个应用程序的图像吗?一个不依赖于其他文件夹的文件夹?

您当然可以将图像和代码放在一个jar文件中。图像未加载,或者因为它不在jar文件中,或者因为它不在jar中的路径
/images/backGround.jpg


关于jar文件,您可能不知道的一件有用的事情是:它们是.zip格式的,因此您可以使用任何zip工具查看jar中的内容(暂时将jar文件重命名为.zip可能会使这更容易)。如果图像不存在,请修复您的jar构建(您没有说明如何制作,因此不确定需要更改什么)。如果映像在那里,但位于不同的路径下,则修复jar构建以将其放置在正确的位置,或者更改读取它的路径。

是的,您肯定可以将整个应用程序包含到单个jar文件中,即可运行的jar文件中。但我建议您不要将图像包含在jar文件中,而是将该图像路径传递给属性文件,并在图像路径代码中使用该属性文件。这样,即使下次需要更改图像,也只需更改属性文件中的路径,就不必再次导出整个项目。

是的,整个应用程序都可以放在一个JAR文件中。创建一个与src文件夹相同级别的资源文件夹,将资源文件夹添加到类路径中,资源为“/background.jpg”。与删除此图像一样,应用程序可以从屏幕上删除图像,但不能从jar中删除。