我正在创建一个简单的程序,现在我想将其导出为可执行的jar文件。一切正常,只是jar文件找不到图像。
为了创建可运行的JAR文件,我使用了Eclipse 2021-12中的第二个选项(将所需的库打包到生成的JAR中(。这似乎运行得很好,因为我只有jar,没有运行程序所需的其他文件夹。
我的jar文件结构如下:
jar_file/
├─图像/
│ ├─frog.png
我已经尝试了多种获取图像文件的方法。
这就是我如何定义图标:private static Image icon;
使用toURI((和toString((
icon = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/frog.png").toURI().toString());
Eclipse
这在Eclipse中不起作用。
路径输出:file:/C:/Projekte/serviceticketapp/target/classes/images/frog.png
Jar文件
这在Jar文件中不起作用。
路径输出:rsrc:images/frog.png
使用toExternalForm((
icon = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/frog.png").toExternalForm());
Eclipse
这在Eclipse中不起作用。
路径输出:file:/C:/Projekte/serviceticketapp/target/classes/images/frog.png
Jar文件
这在Jar文件中不起作用。
路径输出:rsrc:images/frog.png
使用File和toURI((
File imageFile = new File(getClass().getResource("/images/frog.png").toURI());
icon = Toolkit.getDefaultToolkit().getImage(imageFile.getAbsolutePath());
Eclipse
这在Eclipse中有效。
路径输出:C:Projekteserviceticketapptargetclassesimagesfrog.png
Jar文件
抛出错误。
java.lang.IllegalArgumentException: URI is not hierarchical
摘要
在上面你可以看到我试图获得图像文件的所有方式。只有一个在Eclipse中工作,而它们都不在jar文件中工作。
我做错了什么,或者我必须如何排列文件才能在jar文件和Eclipse中工作。
请询问您是否需要更多信息。提前谢谢。
我会使用imagio(import javax.imageio.ImageIO
(
tIcon = new TrayIcon(ImageIO.read(getClass().getResource("/images/frog.png"), "Service Ticket App");