Что означает «Исключение в потоке «main» java.lang.NoClassDefFoundError: javafx / embed / swing / JFXPanel» и как мне это исправить?

#java #swing #javafx

#java #качать #javafx

Вопрос:

Я написал программу на Java для школы, и она скомпилировалась должным образом, но когда я попытался запустить ее, я получил это сообщение:

Исключение в потоке «main» java.lang.Ошибка NoClassDefFoundError: javafx/embed /swing/JFXPanel в Main.main (Main.java:5), вызванная: java.lang.Исключение ClassNotFoundException: javafx.embed.swing.JFXPanel в java.base/jdk.internal.loader.Встроенный загрузчик.loadClass(встроенный загрузчик.java:583) в java.base/jdk.internal.loader.Загрузчики классов $AppClassLoader.loadClass(ClassLoaders.java:178) в java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) … еще 1

Я проверил несколько источников, но ни один из них не соответствует моей точной проблеме. Я использую java версии 11.0.2, и все это запускается на Mac, а IDE — Atom.

$ java -версия версия java «11.0.2» 2019-01-15 LTS Java (TM) SE Runtime Environment 18.9 (сборка 11.0.2 9-LTS) Java HotSpot (TM) 64-разрядная серверная виртуальная машина 18.9 (сборка 11.0.2 9-LTS, смешанный режим)

Ответ №1:

Исключение означает, что компоненты JavaFX отсутствуют в пути к классу.

В java 11 JavaFX был перемещен за пределы JDK. Смотрите, например, эту статью.

Вам нужно загрузить модуль JavaFX для вашей платформы и добавить его самостоятельно. Смотрите эти инструкции.