【问题标题】:Exported runnable jar not working because java.net.URL.toString() is null?由于 java.net.URL.toString() 为空,导出的可运行 jar 不起作用?
【发布时间】:2021-02-18 19:11:54
【问题描述】:

我一直在做一个程序,最终决定尝试导出并运行它,所以我开始使用 Launch4j 创建一个 jar 包装器。每当我尝试通过 Launch4j 或使用 .bat 文件运行它时,它都不会启动。

在 Eclipse 中,程序运行良好。当我单击 Launch4j 中的测试包装器(使用 jdk-15.0.1 作为 jre)时,我在日志中看到由于 java.net.URL.toString() 而存在 NullPointerException

我的程序依赖于 Spotify API,它也有一些 Selenium 代码。我不太确定是什么导致了这个问题,因为所有代码在 Eclipse 中都能完美运行,而且我的代码中没有任何地方试图获取空 URL 的字符串。

这是我在日志中看到的错误:

java.lang.NullPointerException: Cannot invoke "java.net.URL.toString()" because "url" is null
    at java.desktop/sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:653)
    at java.desktop/sun.awt.SunToolkit.getImage(SunToolkit.java:689)
    at views.view.initComponents(view.java:419)
    at views.view.<init>(view.java:123)
    at views.view$1.run(view.java:95)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

【问题讨论】:

  • 所以我能够通过创建一个新的 java 项目并复制和粘贴代码来解决这个问题。我不太确定问题是什么,但它现在可以工作了!
  • 我怀疑这是一个问题,图像资源不在 JAR 中的预期位置。但是,没有明确的证据,并且由于问题已经“消失”(而且您不知道确切原因),因此应该将其关闭为不可重现。

标签: java selenium maven spotify executable-jar


【解决方案1】:

今天同样的事情发生在我身上,就我而言,问题是目录的第一个字母是大写的,而在 Java 中我把它放在了小写。

当我正确重命名目录后,我再次将其导出,不再收到错误消息。

【讨论】:

    猜你喜欢
    • 2015-12-21
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2013-02-21
    • 2013-07-06
    相关资源
    最近更新 更多