繁体   English   中英

单独运行Jar文件

[英]Running a Jar file alone

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

我的罐子有什么问题可以帮助我运行我的罐子吗?

您的jar文件将需要包含该图像。

有关如何执行操作的说明,请参阅本教程本教程 基本上,如果您将文件包括在源文件夹中(具有适当的路径),则应该可以。

如果您认为图像已经在那里,请运行

jar tvf file.jar

显示内容。 确保所有内容都位于目录期望的位置。


编辑:根据评论,问题原来是由于区分大小写。

在jar文件中查找资源始终区分大小写,而从文件系统中加载资源仅在文件系统区分大小写时才区分大小写。 因此,如果您的文件是image.GIF但您正在寻找image.gif那么当您从Windows中的文件系统而不是jar文件中加载文件时,它将起作用。

并且您已检查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

我知道...与您自己的示例相差无几,但确实有效...所以我想您的示例也很接近正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM