7

私は OpenJDK 11 と OpenJFX 11 に移行しています。ソースから両方を正常にビルドし、OpenJFX wiki に従って --with-import-modules=[path_to_modular_sdk] 引数を使用して JDK をビルドしました。Apache Netbeans 9 で単純な「Hello World」テスト プロジェクトを構築しようとするまでは、すべてうまくいきます。この時点で、「JavaFX デプロイメント ライブラリがアクティブな JDK に見つかりません」というエラーが表示されます。これに関する情報を検索しようとしましたが、関連するものは見つかりませんでした。誰かがこれを引き起こしているものに光を当てることができれば、私はそれを高く評価します. 助けてくれてありがとう。パトリック。

4

3 に答える 3

10

@mipa が指摘しているように、既存のプロジェクトを移行するために Java 11 も JavaFX 11 もビルドする必要はありません。

Apache NetBeans 9.0 に関しては、JavaFX プロジェクトの現在の ant ビルド ファイルは、まだ JavaFX 11 をサポートしていません。常に JavaFX jar を探しており、見つからない場合は停止します。これは、JavaFX が JDK の一部ではなく、手動で jar を追加する必要があった昔 (Java 8 より前) からのレガシーです。

たとえば、新しい JavaFX プロジェクトを作成しようとすると、次のエラーが発生します。

ネットビーンズ

しかし、これは、NetBeans 9.0 の有無にかかわらず、JavaFX 11 を実行できないという意味ではありません。

端末で実行中

端末から Java/JavaFX 11 プロジェクトを実行できます。詳細な手順については、この入門ガイドに従ってください。

一言で言えば、必要なのは次のとおりです。

export PATH_TO_FX=/path/to/javafx-sdk-11/lib
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
java --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX

どこにHelloFX.javaある:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloFX extends Application {

    @Override
    public void start(Stage stage) {
        String version = System.getProperty("java.version");
        Label l = new Label ("Hello, JavaFX 11, running on " + version);
        Scene scene = new Scene(new StackPane(l), 300, 200);
        stage.setScene(scene);
        stage.show();
    }

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

}

モジュラー プロジェクト

NetBeans 9.0 でモジュラー プロジェクトを作成し、モジュールを追加します (簡単にするために という名前を付けましたがjavafx11、これは推奨される名前ではありません)。

コードを追加する前に、JavaFX ライブラリをモジュールパスに追加しましょう。

JavaFX ライブラリ

このライブラリは、JavaFX のローカル ダウンロードの下にあるフォルダです: /Users/<user>/Downloads/javafx-sdk-11/lib/. もちろん、自分でビルドした場合は、代わりにその場所を指すことができます。

これで、モジュールを定義できます。

module javafx11 {
    requires javafx.controls;

    exports javafx11;
}

上記のHelloFXクラスをjavafx11パッケージに追加します。

これで、プロジェクトは完全に正常に実行されます。

まだ を使用している場合でもant、この場合、ビルド ファイルはモジュール パスの変更に合わせて更新され、JavaFX 固有のものは何もないため、プロジェクトは問題なく実行されます。

Java プロジェクト

モジュラー プロジェクトが機能する場合、通常のJava プロジェクトも NetBeans 9.0 で機能します。

Javaプロジェクト (ここでも、JavaFXプロジェクトではありません) を作成し、上記のように JavaFX ライブラリをモジュール パスに追加します。次に、コンパイルと実行の両方でこれらの VM オプションを追加する必要があります。

 --module-path=/path/to/javafx-sdk-11/lib --add-modules=javafx.controls

プロジェクトは正常に実行されるはずです。

JavaFX 11

メイヴン

もう 1 つのアプローチは、ant の代わりに Maven または Gradle を使用することです。

Maven -> JavaFX プロジェクトを作成し、pom.xml ファイルを変更して、JavaFX 依存関係を追加するだけです。

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11-ea+23</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11-ea+23</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <release>11</release>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.ow2.asm</groupId>
                    <artifactId>asm</artifactId>
                    <version>6.1.1</version>
                    <!--  Use newer version of ASM  -->
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>javafx11.HelloFX</mainClass>
                </configuration>
        </plugin>
    </plugins>
</build>

NetBeans からクリーンアップ、ビルド、および実行すると、問題なく動作するはずです。

Gradle の場合、NetBeans 用の Gradle プラグインを含めると、同じことができます。

于 2018-08-23T17:19:57.897 に答える
0

OpenJDK11/OpenJFX11 に移行するとおっしゃっていますが、JDK と JFX の両方を自分で構築することから始めたのはなぜですか? ここhttp://jdk.java.net/11/とここhttp://jdk.java.net/openjfx/から EA ビルドをダウンロードする方がはるかに簡単です 。 JDK は廃止されたため、JDK とは別にビルドできます。ビルド手順が最新かどうかわかりません。

于 2018-08-23T15:02:16.623 に答える