我在引用jar文件中的一个简单图像时遇到了真正的问题。
我有一个包含java文件的包au.com.mysite.pdf
我有一个包含图像的包裹au.com.mysite.pdf.res
在我的java文件中,我引用了这样一个图像getClass().getResource("/au/com/mysite/pdf/res/logo.png").getPath()
但是永远找不到图像。初次亮相时是这样的/C:/Documents%20and%20Settings/myname/workspace/gnupdf/bin/au/com/mysite/pdf/res/logo.png
前导"/"和分隔符的内容不适用于窗口。
我检查了这个路径,它在MS Explorer中不起作用。
更新
好的,它在一定程度上起作用,除了图像路径不正确,/C:/Documents%20and%20Settings/myname/workspace/gnupdf/bin/au/com/mysite/pdf/res/logo.png
不是对文件的引用,前导斜杠和%20空格字符是什么?如何将其转换为文件URL而不是web URL?
我不能告诉你为什么这不起作用,但当我引用我存储在jar中的图像时,通常是菜单图标图像,我使用:
ImageIcon image = new ImageIcon(this.getClass().getResource("/package/sub_package/image_name.png"));
这一直对我有效。
如果图像在jar中,那么getResource不会返回任何有用的信息。getResourceAsStream可能就是您想要的。
从.jar中使用getResource将起作用。有几件事:.jar文件的清单的类路径是什么?.jar中的文件区分大小写。
更新
我看到你的问题可能是什么。你正在试图获得路径,但这不是必要的,因为无论如何你都无法引用它。
相反:
BufferedImage image = ImageIO.read(this.getClass().getResource("images/image01.png));
然后您可以在java程序中使用您的图像。
例如:
如何列出JAR文件中的文件?