亥 我有一个在netbeans6.0.1中设计的应用程序,我需要将图像显示为徽标。我的编码如下
mLogo = new JLabel();
URL lUrlLogo = getclass().getResource("/com/images/image.gif");
Image lLogoimage = Toolkit.getDefaultToolkit().getImage(lUrlLogo);
ImageIcon licon = new ImageIcon(lLogoimage);
mLogo.setIcon(licon);
当我在netbeans中执行它时,我的代码工作正常但是当我尝试运行由netbeans在 dist 文件夹中创建的jar文件时,它给了我一个例外
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
我的罐子有什么问题 有人可以帮我运行我的罐子 感谢你
答案 0 :(得分:3)
您的jar文件需要包含图片。
有关如何操作的说明,请参阅this tutorial或this one。基本上,如果您将文件包含在源文件夹中(使用适当的路径),它应该没问题。
如果您认为自己已经有了图像,请运行
jar tvf file.jar
显示内容。确保所有内容都符合目录。
编辑:根据评论,问题归结为案例敏感性。
在jar文件中查找资源总是区分大小写,而从文件系统加载它们只是区分大小写,如果文件系统是。因此,如果您的文件是image.GIF
但是您正在寻找image.gif
,那么当您从Windows中的文件系统加载时它将起作用,但不会在jar文件中加载。
答案 1 :(得分:0)
您已检查过JAR文件是否包含路径"/com/images/image.gif"
?
另外,我不太确定领先的斜杠,我总是使用相对路径来访问资源(但我想它应该可以工作)。
作为类it.lapo.example.Main
的示例,我使用getClass().getResource("resources/logo.png")
,并且在JAR文件中是这样的:
it/lapo/example/Main.class
it/lapo/example/resources/logo.png
我知道......与你自己的例子没什么不同,但确实有用......所以我猜你的也很接近正确。