当前位置: 首页 > 知识库问答 >
问题:

导出可运行的罐子后无法找到资源

艾奕
2023-03-14

我有一个Java项目在Eclipse中运行良好,但当我将其导出到可运行的Jar文件(选择“将所需库打包到Jar”时)时,我会遇到以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
    der.java:58)
Caused by: java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at cib.cad.kernel.cmds.StartGui.doCmd(StartGui.java:94)
    at cib.util.cmd.CmdMgr.doCmd(CmdMgr.java:91)
    at cib.cad.kernel.Kernel.begin(Kernel.java:1058)
    at cib.cad.Stylemaster.main(Stylemaster.java:70)
    ... 5 more
Exception in thread "Thread-1" java.lang.NullPointerException
    at cib.cad.kernel.Kernel.setPreferredLocation(Kernel.java:2615)
    at cib.cad.view.ErrorMessagePrintStream$MsgThread._showMessageDialog(Err
    orMessagePrintStream.java:303)
    at cib.cad.view.ErrorMessagePrintStream$MsgThread.run(ErrorMessagePrintS
    tream.java:268)

还有StartGui的代码。doCmd(StartGui.java:94)看起来像这样:

try {
        ClassLoader cl = StartGui.class.getClassLoader();
        URL url = cl.getResource("cib/cad/img/StyleIcon.jpg");      
        Image icon = new ImageIcon(url).getImage();   //<--  Line 94
        frame.setIconImage(icon);
}
catch (IllegalArgumentException e) {
}

我假设这个空指针异常是因为它无法定位图标,但我不完全理解为什么它会在eclipse中完美运行。

提前感谢善良的人们。

共有1个答案

桂浩言
2023-03-14

试试这个。

Image icon = new ImageIcon(StartGui.class.getClassLoader()
                           .getResourceAsStream("cib/cad/img/StyleIcon.jpg"))
                           .getImage();

希望这有帮助。

 类似资料:
  • 问题内容: 我的应用有问题。当我在Eclipse中运行应用程序时,声音播放良好,但是如果将应用程序导出到可运行的jar中,则声音将不起作用。 播放声音的方法: 哪里可能出错? 问题答案: 问题在于 JAR文件中的出于任何原因均不起作用。因此,我将其替换为: 而且效果很好。

  • 我在经营一个Kafka制作人。我已经在yml文件中配置了密钥库位置,并在eclipse中运行时获取了它。但是当代码作为jar运行时,它无法找到密钥库位置。如何解决这个问题。 这是我的yml档案。 我得到以下错误: JAVA木卫一。FileNotFoundException:类路径资源[es-cert.jks]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/u01/home/app

  • 我试图从eclipse导出一个可运行的jar,但结果是: 这是舱单: 其中Operazioni和Negozio是my包,itext是外部库

  • 问题内容: 我想开始使用离子框架,但是不幸的是,我已经在第一步中失败了。 我正在运行Ubuntu 13.04,并且已安装节点v0.10.25。我已经安装了ionic,其文档中对此进行了说明: 安装进行顺利,没有错误或警告,但是安装后我键入 我得到错误: 我是ubuntu的新手,所以我可能配置了一些错误的东西,但是找不到。 谢谢 问题答案: 好吧,我终于找到了。 ionic安装应该位于/ home

  • 我试图在CMD上使用gradlew.bat运行我的项目。 我该如何处理这个问题?

  • 所以,我已经在互联网上阅读了如何将我的项目提取到一个可运行的Jar文件。 我可以很好地提取它们,但当我尝试运行它时,它什么也不做。 当我在命令提示符下用 它所指向的特定行是: 它正在产生一个空指针异常。当我在eclipse中运行我的项目时,它就很好了。 当我将它导出到一个jar时,它得到一个NPE,我相信这是由于它找不到文件造成的。 以下是我的项目工作区: http://imgur.com/034