单独运行Jar文件

时间:2009-09-03 06:14:05

标签: java swing

亥  我有一个在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)

我的罐子有什么问题 有人可以帮我运行我的罐子 感谢你

2 个答案:

答案 0 :(得分:3)

您的jar文件需要包含图片。

有关如何操作的说明,请参阅this tutorialthis 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

我知道......与你自己的例子没什么不同,但确实有用......所以我猜你的也很接近正确。