Экспортированный runnable jar не работает, потому что java.net.URL.toString() имеет значение null?

#java #selenium #maven #spotify #executable-jar

#java #селен #maven #spotify #исполняемый файл-jar

Вопрос:

Я работал над программой, и я, наконец, решил попробовать экспортировать ее и запустить, поэтому я начал использовать Launch4j для создания оболочки jar. Всякий раз, когда я пытаюсь запустить его, либо через Launch4j, либо с помощью файла .bat, он не запускается.

В Eclipse программа работает нормально. Когда я нажимаю test wrapper в Launch4j (используя jdk-15.0.1 в качестве jre), я вижу в журнале, что есть из- NullPointerException за java.net.URL.toString() .

Моя программа зависит от 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)
  

Комментарии:

1. Итак, я смог устранить проблему, создав новый java-проект и скопировав и вставив код. Я не слишком уверен, в чем проблема, но теперь она работает!

2. Я подозреваю, что это была проблема с ресурсом изображения, не находящимся в ожидаемом месте в JAR. Однако нет четких доказательств, и поскольку проблема «исчезла» (и вы точно не знаете, почему), это должно быть закрыто как невоспроизводимое.

Ответ №1:

Сегодня со мной произошло то же самое, и в моем случае проблема заключалась в том, что в каталоге была первая буква в верхнем регистре, а в Java я поместил ее в нижний регистр.

Когда я правильно переименовал каталог, я экспортировал его снова и больше не получал ошибку.