首先,让我澄清一下,我是业余爱好的Java程序员,英语不是我的母语,这是我在StackOverflow中的第一个问题,所以如果我做错了什么,我将不胜感激宜。
当我需要在我的应用程序中使用某些图像时,我将图像文件放在项目的bin文件夹中,并使用以下代码访问该图像:
Image img1 = new ImageIcon(this.getClass().getResource("/confirm.png")).getImage();
最近,我决定让用户使用JFileChooser选择图像。我的方法是获取图像路径并将该图像复制到我的bin文件夹中,这样我就可以使用上面的代码行了。这是我如何做到的:
File outputFile = new File(System.getProperty("user.dir")+ "/bin/" + "default.png");
ImageIO.write(defaultImage, "png", outputFile);
这样我就可以在项目文件夹中找到该文件的副本(C:\ Users \ renan \ Desktop \ Image_Editor \ bin \ default.png)。
当我在Eclise中运行应用程序时,一切正常,但是当我创建Runnable JAR文件(.jar)时,事情开始出错。当我通过命令提示符(java -jar“Image Editor.jar”)修改我的.jar文件时,我遇到以下错误:
java.io.FileNotFoundException: C:\Users\renan\Desktop\bin\default.png (The system can not find the path specified).
在想到这个错误后,我意识到在创建一个.jar文件之后,我无法将图像复制到我的bin文件夹中,因为现在只有一个.jar文件,而不是像以前那样分开的文件夹。
我的问题是:如何处理程序编译后将要使用的图像?
我应该在计算机中创建一个文件夹来存储此应用程序图像并从该文件夹加载图像吗? (比如游戏有截图文件夹来保存用户捕获的图像)。
如果有人能告诉我正确的方法,我会非常感激。
答案 0 :(得分:0)
在JAR之外创建一个文件夹。 JAR文件本质上是Windows上的* .zip文件,因此在编译后,您无法更改JAR文件中的任何文件夹,因为它是压缩格式。