【发布时间】: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