У меня была следующая ошибка, когда зависимость json .org не была включена в окончательный файл .jar.
Exception in thread "Thread-2" java.lang.NoClassDefFoundError: org/json/JSONTokener
at gui.Main.lambda$awake$0(Main.java:91)
at java.base/java.lang.Thread.run(Thread.java:830)
Caused by: java.lang.ClassNotFoundException: org.json.JSONTokener
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 2 more
Затем я узнал, что вы можете добавить json .org jar файл как «Извлеченный каталог», который решил мою проблему. После этого я решил попробовать сделать то же самое для JavaFX. При попытке добавить его в качестве «извлеченного каталога» я заметил, что он уже был там указан (как показано на рисунке ниже).
Однако, если я пытаюсь запустить файл jar, используя java -jar [filename].jar
, я получаю Error: JavaFX runtime components are missing, and are required to run this application
. Я могу запустить его, используя java -jar --module-path /usr/local/javafx-sdk-11.0.2/lib --add-modules javafx.controls,javafx.fxml [filename].jar
, но это не должно быть теоретически необходимым. Мне было интересно, если кто-нибудь знает, почему это не работает? Спасибо.
Примечание. Упаковка JavaFX была бы очень полезна, так как это означает, что я могу просто отправить файл .jar, и он будет работать "из коробки" без необходимости установки дополнительных зависимостей.