[Я пытаюсь создать приложение JavaFX, следуя методу MVC. Я создал файл Main.java
для запуска приложения, файл controller.java
и файл view.fxml
.
При попытке запустить приложение (главный файл) получаю следующую ошибку: Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found
.
У меня есть другой проект, в котором я скопировал эти три файла внутри той же IDE eclipse с тем же путем сборки и аргументами виртуальной машины, и там это работает. Дело в том, что мне это нужно внутри моего проекта, а не в «фиктивном» проекте, где он, кажется, работает. Я надеюсь, что это не слишком запутанно, поэтому я добавлю несколько скриншотов.
На изображении вы можете увидеть проводник пакетов с расширенными указанными проектами. Как видите, оба имеют одни и те же файлы и одни и те же библиотеки.
Второе изображение для того, чтобы продемонстрировать, что оба проекта включают файлы javafx.controls.jar
. Даже мой профессор не смог мне помочь...
У ЛЮБОГО есть идея относительно того, что может быть причиной этой проблемы?
Спасибо. [
edit Я добавил скриншоты, чтобы показать вам, что включает в себя моя вкладка зависимостей в конфигурациях запуска.
Вам нужно, чтобы библиотеки JavaFX были доступны во время выполнения, а не только во время компиляции. Так что недостаточно просто «включить их в путь сборки». Этот вопрос специфичен для IntelliJ, но концепции те же. Обратите внимание, в частности, на шаг 4 в принятом ответе.
@ Абра, я тоже это заметил. Однако файл SpieleController.java
в обоих проектах одинаков.
@James_D извините за наивный вопрос, но как мне убедиться, что они также доступны во время выполнения? кстати. я думаю, что уже сделал шаг 4 правильно --module-path "/Library/Java/JavaVirtualMachines/javafx-sdk-11.0.2/lib" --add-modules=ALL-MODULE-PATH
Это должно заставить его работать. Но убедитесь, что вы предоставляете эти аргументы как компилятору, так и среде выполнения. Все это намного проще, если вы используете инструмент управления зависимостями, такой как Maven или Gradle.
файл ... абсолютно одинаков в обоих проектах. Не меняет того факта, что он не компилируется в одном из проектов. Какие строки в файле SpielController.java
не компилируются? Какую ошибку Eclipse показывает вам для этих строк?
@Abra я опубликовал еще один скриншот с ошибкой... :D
@James_D Я добавил эту команду в конфигурации запуска на вкладке аргументов в разделе «VM - Arguments». это для времени выполнения или компиляции? где будет один для компилятора? Спасибо за вашу помощь :)
@Abra дело в том, что eclipse не завершается сбоем из-за этой ошибки, он только дает мне «javafx.controls», который не найден ...
нет скриншотов текста - они нечитаемы и недоступны для поиска
@kleopatra какой текст тебе не читается?
Похоже, что настройки компилятора Java для вашего проекта неверны.
В меню Project Eclipse выберите пункт меню Properties. Появится окно свойств проекта. В этом окне выберите компилятор Java и убедитесь, что уровень соответствия указан правильно. См. изображение ниже.
Поскольку вы, похоже, используете JDK 11, я предлагаю вам установить уровень соответствия 11.
После исправления ошибок компиляции вы можете запустить свой проект. Чтобы запустить ваш проект, вы должны определить конфигурацию запуска. Выберите пункт «Выполнить конфигурации...» в меню «Выполнить». Убедитесь, что JAR-файлы JavaFX отображаются на вкладке «Зависимости».
Привет Абра, спасибо за ответ. Я проверил уровень соответствия компилятора, и он действительно был полностью выключен - 1,5 вместо 11. Изменение этого привело к исчезновению ошибки, в проекте больше нет «белого креста внутри красного прямоугольника». Однако ошибка остается Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found
кстати, извините за задержку с ответом.
И снова здравствуйте. На вкладке зависимостей я также включил библиотеки. Я добавил еще два скриншота, чтобы продемонстрировать это. У меня есть пользовательская библиотека javaFx11, которая включает в себя файл javafx.controls.jar
Теперь они встали.
Белый крестик в красном квадрате означает, что ваш код содержит ошибки сборки (то есть компиляции). Откройте файл
SpielController.java
в java-редакторе и пометьте строки, содержащие ошибки. Используете ли вы Maven, Gradle, Ant или какой-либо другой инструмент сборки?