LINUX.ORG.RU

Как собрать java-пакет с javafx на freebsd?

 , , ,


0

1

Он строится мавеном. Запускаю сборку и получаю много таких ошибок:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project phoenicis-javafx: Compilation failure: Compilation failure:
[ERROR] .../javafx/UiMessageSenderJavaFXImplementation.java:[22,26] package javafx.application does not exist
[ERROR] .../javafx/controller/MainController.java:[22,28] package javafx.scene.control does not exist
[ERROR] .../javafx/views/common/ThemeManager.java:[6,26] package javafx.collections.transformation does not exist
[ERROR] .../javafx/views/mainwindow/apps/ApplicationsView.java:[26,20] package javafx.event does not exist
[ERROR] .../javafx/views/mainwindow/apps/ApplicationsView.java:[27,26] package javafx.scene.input does not exist
[ERROR] .../javafx/views/mainwindow/ui/MainWindowView.java:[21,20] package javafx.scene does not exist
[ERROR] .../javafx/views/mainwindow/ui/MainWindowView.java:[22,28] package javafx.scene.control does not exist
[ERROR] .../javafx/views/mainwindow/ui/MainWindowView.java:[23,27] package javafx.scene.layout does not exist
[ERROR] .../javafx/views/mainwindow/ui/MainWindowView.java:[45,56] cannot find symbol
[ERROR] .../javafx/views/mainwindow/apps/ApplicationsSidebar.java:[3,28] package javafx.beans.binding does not exist
[ERROR] .../javafx/views/mainwindow/apps/ApplicationsSidebar.java:[6,23] package javafx.geometry does not exist
[ERROR] .../javafx/views/mainwindow/ui/MainWindow.java:[22,26] package javafx.scene.image does not exist

Можно что-то сделать? Джаву никогда не тыкал. Мавен тоже.

★★★★★

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

EXL ★★★★★
()
Ответ на: комментарий от EXL

проект наверняка старый и под Java 8.

Не, проект никогда не собирался на фряхе. Но написано Java 11+.

Следовательно тебе нужно скачать Oracle’овскую Java 8 по FreeBSD и собирать проект ей, поскольку внутри она уже имеет JavaFX в отличие от других сборок.

Спасибо, попробую.

Clockwork ★★★★★
() автор топика
Последнее исправление: Clockwork (всего исправлений: 1)
Ответ на: комментарий от EXL

Я это читал. Да, есть openjfx14. Только я не понимаю в какой такой вызов добавлять параметры, если пакет собирается мавеном.

Я посмотрел строку 22 в файле UiMessageSenderJavaFXImplementation.java и увидел это

import javafx.application.Platform;

Но мне это ни о чем не говорит

Clockwork ★★★★★
() автор топика
Ответ на: комментарий от Clockwork

К сожалению ничего не могу подсказать. Если есть возможность – соберите JAR или WAR на любом Linux-дистриубутиве и перенесите внутрь FreeBSD. Это куда как легче чем искать что и где там недоложили.

EXL ★★★★★
()
Ответ на: комментарий от iZEN

Пути к каталогу openjfx14/lib ?

У меня почему-то Error

> java --module-path=/usr/local/openjfx14/lib --add-modules=javafx.swing,javafx.web                                                                             
Unrecognized option: --module-path=/usr/local/openjfx14/lib
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Clockwork ★★★★★
() автор топика
Ответ на: комментарий от Clockwork

У меня почему-то Error

Потому что ты пытаешься для Java 11 (или какая там у тебя) запихать модули Java 14.

Скорее всего из-за этого.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от EXL

Потому что ты пытаешься для Java 11 (или какая там у тебя) запихать модули Java 14.

В твоей ссылке написано, что оно работает с java/openjdk11 тоже. Название вводит в заблуждение.

Кроме [port] java/openjfx14 [/port], на фряхе нет нужных fx-модулей. Я не нашел.

Clockwork ★★★★★
() автор топика
Последнее исправление: Clockwork (всего исправлений: 1)
30 ноября 2023 г.

Джаву никогда не тыкал. Мавен тоже.

Шаги очевидны:

  1. следует изучить Java-у
    (JavaFX 2.0 and later is implemented as a Java library, and applications using JavaFX are written in normal Java code);
  2. следует изучить Maven;
  3. следует изучить JavaFX
    (JavaFX 20 was released in March 2023)
    В состав каких JDK входит JavaFX?
    Oracle announced their intention to stop bundling JavaFX in their build of JDK 11 and later) «Oracle будет поддерживать JavaFX в составе Java JDK 8 (released on March 18, 2014) до марта 2025» - https://ru.wikipedia.org/wiki/JavaFX
    я так понял, что теперь JavaFX SDK это совершенно отдельный пакет, и сразу после этого мне ломают мозг:
    With the release of JDK 11 in 2018, Oracle made JavaFX part of the OpenJDK under the OpenJFX project - https://en.wikipedia.org/wiki/JavaFX
    Так он отдельный, или в составе OpenJDK идёт устаревшая («стабильная») версия?

https://jdk.java.net/javafx20/ «JavaFX 20 is designed to work with JDK 20»

https://jdk.java.net/javafx22/
https://jdk.java.net/22/
Java SE = Java Platform, Standard Edition (https://en.wikipedia.org/wiki/Java_Platform,_Standard_Edition)

Затем надо подумать, как это всё собирать из исходных кодов. В Gentoo для этого целый проект есть, и они там собирают более новые версии Java при помощи более старых версий и там черепахи до самого низа. Должно быть что-то такое же и в FreeBSD, наверное.

Shushundr ★★★
()

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

Даю цинк:

вот тут находится скрипт сборки, где видно что используется не JavaFX а OpenJFX, причем не вся а отдельные компоненты.

Эти компоненты выкачиваются Maven при сборке, внутри .jar находятся готовые .so библиотеки под разные платформы, где версии под FreeBSD разумеется нет.

Чтобы эта штука заработала, нужно собирать и запускать ее линуксовой версией JDK (она есть в пакетах фрибзд), настроив предварительно слой эмуляции.

Второй вариант это сборка нативного OpenJFX самостоятельно и пропихивание своей версии в сборку, но врядли ты осилишь.

alex0x08 ★★★
()
Последнее исправление: alex0x08 (всего исправлений: 1)