Подтвердить что ты не робот

Как преобразовать обычный Java-проект в intellij в проект JavaFx

В настоящее время я использую обычный проект java (проект gradle) и хочу преобразовать его в проект JavaFx без использования reimport существующих источников в новый проект Javafx. Есть ли способ достичь этого?

4b9b3361

Ответ 1

Преобразовать нечего.

Я не верю, что в Idea есть какая-то разница между "нормальным" Java-проектом и проектом JavaFX.

Конечно, в Idea 12.x + есть мастер, который вы можете использовать для создания нового проекта JavaFX. Но я думаю, что все, что он делает, это создать образец приветствия мирового приложения - после первоначального создания, как работает проект, не отличается от любого другого Java-проекта.

И так должно быть, JavaFX - это просто Java. Oracle не различает JavaFX и Java в своем дистрибутиве, и ни один из них не должен иметь IDE в своих типах проектов.

Я считаю, что в этом случае, даже если я ошибаюсь, я достаточно прав, что на самом деле не имеет значения, ошибаюсь ли я.

Обновление

Итак, я был настолько не прав, что это важно: -)

Использование Idea 13.1.4, если я создаю новый проект с помощью File | New Project | Java, существуют следующие настройки ресурсов (File | Settings | Compiler):

?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.dtd;?*.tld;?*.ftl

То есть, ресурсы для проекта просто предназначены для копирования только определенных типов файлов. Таким образом, вы можете изменить его, чтобы получить дополнительные типы файлов, требуемые в некоторых проектах JavaFX, добавив поддержку копирования ресурсов для fxml и css; то есть добавление ;?*.fxml;?*.css.

Интересно, что если вы создаете новый проект с помощью File | New Project | JavaFX, существуют следующие настройки ресурса:

!?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj

По существу, он копирует все, что не является исходным файлом, а не файловым списком, а не файловым списком, который используется другими шаблонами создания проектов. Действительно странно... В любом случае, наборы ресурсов настраиваются пользователем, поэтому вы можете изменять их по своему усмотрению, и как только вы это сделаете, у вас не должно быть никаких проблем (я считаю, но я ошибся до;-)

Предложение - используйте сторонние инструменты сборки в сочетании с вашей IDE

Возможно, вам будет лучше сфокусироваться на стороннем инструменте, таком как Gradle или Maven. Идея отлично работает с обоими внешними инструментами построения (и другими). Преимущества использования стороннего инструмента:

  • Проекты с этими инструментами следуют соглашению, в котором ресурсы помещаются в определенную папку ресурсов, и все в этой папке рассматривается как ресурс, который будет упакован в ваш вывод сборки. Так что там меньше путаницы.
  • Результирующие проекты более переносимы и проще в использовании другими разработчиками, которые могут не использовать Idea.
  • Проекты могут быть легко построены системами непрерывной интеграции, такими как Jenkins.
  • Оба Gradle и Maven имеют специальные плагины JavaFX, которые предоставляют дополнительную поддержку для упаковки приложений JavaFX.

Конечно, недостатком использования инструмента построения сторонних разработчиков является сложность (и многие причуды) изучения их, поскольку иногда они могут быть вполне зверь. Поэтому я думаю, что это немного компромисс - небольшие, личные поисковые проекты им не нужны, большие проекты или проекты, которые вы намерены поделиться с другими, выигрывают от использования таких инструментов.

Ответ 2

Одним из решений является создание вашего кода с помощью Scene Builder, а затем его интеграция в существующий проект IntelliJ. Хотя это должно быть возможно, чтобы импортировать это как модуль, вы также можете просто переместить код туда, где он должен быть (внесение соответствующих исправлений в инструкции пакета и т.д.). Если вы заметили, что импорт javafx не распознается в вашем проекте, попробуйте это решение:

Сначала убедитесь, что вы настроили IntelliJ в целом для JavaFX, выполнив основные шаги этого учебника. Примечание: Ниже я упоминаю 1.8, но это должно работать с 1.7+. Я рекомендую 1,8 +.

Во-вторых, убедитесь, что существующие настройки проекта позволяют использовать javaFX

  • Открыть структуру проекта
  • Нажмите "Проект" в панели параметров проекта
  • Убедитесь, что SDK проекта 1,8+.

Третий Убедитесь, что модули настроены для JDK, поддерживающего JavaFX

  • Открыть структуру проекта
  • Нажмите "Модули" в панели параметров проекта
  • Убедитесь, что используемый SDK модуля поддерживает javaFX, снова я использую JDK 1.8, но он должен работать с 1.7.

Кроме того, имейте в виду, что если у вас есть проект maven, вам может потребоваться разместить ваш fxml в определенном месте, "/main/resources/". Посмотрите это.

Это сработало для меня, и я надеюсь, что это поможет вам.

Ответ 3

Я выполнил следующие шаги

  • Создайте новый модуль в существующем проекте intellij (A)
  • Создайте новый проект JavaFx в другом месте
  • Скопируйте код из проекта JavaFx, а именно Controller.java,Main.java and sample.fxml в ваш модуль в проекте (A) в каталоге src, как в A/user-interface/src

введите описание изображения здесь

  • Вы найдете ошибку в sample.fxml, так как она ссылается на класс контроллера как sample.Controller только на "Контроллер". он работал таким образом (поскольку я удалил папку пакета sample

Исправление sample.fxml

  • В (A) откройте меню настроек File | Project Structure | Modules
  • Выберите модуль user-interface из списка в левой части окна настроек
  • Перейдите на вкладку dependencies
  • Добавьте старый не-gui-модуль в качестве зависимости от модуля, используя зеленую метку + в правой части
  • Теперь вы можете использовать классы в модуле non-gui, наслаждайтесь!

note: вы можете пропустить зависимость модуля add и позволить intellij сделать это за вас, просто введите имя класса в старом модуле, alt+enter (волшебная лампочка) → add module depenency

Окно зависимости модуля

Ответ 4

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

введите описание изображения здесь

Ответ 5

Так что после долгих поисков я наконец-то сам это выяснил!

Если вы можете создавать новые проекты Javafx в Intellijd, и он работает отлично, но когда вы открываете обычное приложение Java, которое, случается, использует javafx, не работает (потому что java просто не хочет разрешать ссылки на javafx)

у меня работает следующее: вы должны добавить файл "jre/lib/ext/jfxrt.jar" к классам модулей, который находится внутри IDEA на моем компьютере с Windows, это C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3.3\jre64\lib\ext\jfxrt.jar.

И вот, наконец, он строит!