Как добавить JAVAFX зависимости в Maven с Java 10 - PullRequest
0 голосов
/ 24 мая 2018

Я перешел на Ubuntu 18.04.Который имеет java 10 по умолчанию jvm

Теперь мои приложения, использующие javafx, больше не могут компилироваться.

 cannot find symbol
[ERROR]   symbol:   class ObservableMap

Я попытался добавить параметры в плагин maven-compiler-plugin для загрузки javafx.graphicsmodule.

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArgs>
                    <arg>--add-modules</arg>
                    <arg>javafx.graphics</arg>
                </compilerArgs>
            </configuration>
        </plugin>

результат:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] module not found: javafx.graphics

конечно, java --list-modules |grep fx ничего не возвращает.

Я потратил более 10 часов, пытаясь выяснить это.

TL: DR Что я должен делать, чтобы скомпилировать мои модули JavaFX с Java 10?

минимальный проект:

/ pom.xml

<project>
    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>
    <name>java10fx</name>

    <artifactId>java10fx</artifactId>
    <version>0.0.1</version>
    <groupId>my.test</groupId>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <release>10</release>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

/ src / main / java / MyApp.java

import javafx.application.Application;
import javafx.stage.Stage;

public class MyApp  extends Application{

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {}

}

ошибка:

java10fx/src/main/java/MyApp.java:[1,26] package javafx.application does not exist

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

хорошо, так что на самом деле проблема довольно сложная.

Версия OPENJDK, установленная с Ubuntu, представляет собой смесь между java 10 и java 11: установленный пакет на самом деле "openjdk-11", но установленная виртуальная машина ссылается насам как openjdk-10.Так же, как openjdk-11, он не предоставляет модули javafx.

Решением было установить oracle jdk 10:

sudo add-apt-repository ppa:linuxuprising/java
sudo apt install oracle-java10-installer

И тогда работала минимальная программа, которую я дал.

Также я удалил все, например sudo apt remove --purge "openjdk-11 *"

0 голосов
/ 24 мая 2018

OpenJDK никогда не содержал JavaFX и начиная с Java 11, также как и Oracle JDK, поэтому JavaFX должна стать регулярной зависимостью.OpenJFX, проект, стоящий за JavaFX, недавно выпустил раннюю сборку доступа автономного JavaFX SDK , который работает с Java 10 и 11, но еще не доступен в Maven Central (что запланировано на будущее).

На данный момент вам необходимо загрузить SDK вручную и найти способ добавить его в сборку Maven, например, развернув его на Nexus или включив в папку втвой репо.Когда он станет доступен в Maven Central, вы сможете использовать его, как и любую другую зависимость.

...