web-dev-qa-db-ja.com

EclipseでJavaFX 11を使用するにはどうすればよいですか?

JavaFXに問題があります。少なくとも何か、デスクトップまたはモバイルのアプリの作成を開始したかった。そのため、JavaFXライブラリを使用できることがわかりました。しかし、私が理解した限りでは、JDK 9から除外されました。実際、Ubuntu 18でOpenJDK 11を使用しています(EclipseはJavaSE 10環境を持っていると書いています) Sudo apt install openjfxを使用すると、EclipseをJavaFXで動作させることができません。

付属のJavaFXでJDK 8を使用しない意味があるかどうかはわかりませんが、とにかく、Eclipseのそのような条件でJavaFXを使用するにはどうすればよいですか?

10
Alex Chashin

投稿には説明が必要な複数のポイントがあります。さまざまな箇条書きで答えようとします。

しかし、私が理解した限りでは、それ(JavaFX)はJDK 9から除外されました。

JavaFXは、JDK 11以降、Oracle JDKから分離されます。JavaFXはOpenJDKの一部ではなかったため、Oracle JDKに重点を置いています。 OpenJDK 8でもありません。

私は実際にはUbuntu 18でOpenJDK 11を使用しています(EclipseはJavaSE 10環境を持っていると書いていますが、そこも少し混乱しています)

EclipseでJava 11をサポートするには、 Eclipse PhotonのJava 11サポート プラグインをインストールする必要があります。

ここにいくつかあります EclipseでJava 11アプリケーションを実行する方法の例

Sudo apt install openjfxを使用してopenjfxをインストールしましたが、JavaFXでEclipseを動作させることができません。

付属のJavaFXでJDK 8を使用しない意味があるかどうかはわかりませんが、とにかく、Eclipseのこのような条件でJavaFXを使用するにはどうすればよいですか?

OpenJDK 11またはOracle JDK 11はJavaFXにバンドルされないため、最善の方法は、JavaFX SDKを here または here からダウンロードしてIDEにロードすることです。

ツールの構築に慣れている場合は、 Maven Centralで利用可能なJavaFXランタイムjar を直接使用できます。

OpenJDK 11でJavaFX 11を実行する方法のチュートリアルについては、次を参照してください。

JavaFX 11およびEclipse

この投稿を書いている時点で、JavaFX 11を使用するには Eclipse 4.9M が必要です。

Eclipse、JDK 11、およびJavaFX 11 SDKを入手したら、次のいずれかの作成を選択できます。

  • モジュールベースのプロジェクト
  • 非モジュールベースのプロジェクト(module-info.Javaは不要)

モジュールベースのプロジェクト

Javaプロジェクトを作成し、Java FX 11 SDKのJavaFX jarをプロジェクトのモジュールパスに追加します。

enter image description here

module.infoを作成し、javafx.controlsモジュールの依存関係を宣言します。 javafx11は、Javaファイルを含むパッケージの名前です。

module javafx11 {
    requires javafx.controls;
    exports javafx11;
}

プログラムを実行します\ o /

非モジュールベースのプロジェクト

Javaプロジェクトを作成し、Java FX 11 SDKのJavaFX jarをプロジェクトのモジュールパスまたはクラスパスeitherに追加します。

次のJVM引数をプロジェクトの実行構成に追加します。

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

プログラムを実行します\ o /

16
ItachiUchiha

tl; dr

JavaFXを最も簡単に開始するには、 JavaFX 8 がバンドルされており、簡単に入手できるOracleブランドのJava 8リリースを使用してください。

技術的な詳細については、 JRE 8でのJavaFXの使用 を参照してください。関連する多くのWebページのLinkedおよびRelatedセクションをご覧ください投稿。

Javaモジュール化

Javaプラットフォームは、modularizationとして知られる抜本的な再定式化のプロセスにあります。

以前は、 Java SE (標準版)はソフトウェアの1つの大きなモノリスでしたが、ますます増え続けています。単一のアプリですべてを使用することはありません。

Java SEを多数の個別のチャンクに分割して、「モジュール」として正式に定義することを決定しました。大きな利点の1つは、実際に必要なモジュールのみで構成され、未使用のモジュールを省略したJava SEランタイムにアプリをバンドルできることです。 jlink ツールを参照してください。

このモジュール化の副産物として、 CORBA などの古くて人気のない部分が削除され、Javaの標準部分として提供されなくなりました(提供されていますが)他の当事者がそのように決定した場合にピックアップするため)。同様に、いくつかの Java EE 関連モジュールはJava SEから削除され、論理的にはより適切なホームである Jakarta EE プロジェクトに引き継がれます。 JEP 320:Java EEおよびCORBA Modules を削除してください。

モジュール化と再編成のプロセスは、長年にわたる継続的な取り組みです。多くはJava 9およびJava 10で行われました。最終ステップのいくつかはJava 11.で行われています。

Java 11で行われているこれらの手順の1つは、Java SEとのJavaFXのバンドルを中止することです。見る:

したがって、Java 8を使用すると、JavaFX開発をすぐに開始できます。JavaFXライブラリはJava 8.にバンドルされています。また、モジュール化について学ぶ必要も、する必要もありませんモジュールを認識するためにIDE(Eclipseなど)とプロジェクトの設定に取り組んでください。 JavaまたはJavaFXの最後のバージョンを使用する緊急の必要性がない場合は、モジュール化プロセスとツールがスムーズになるまで、おそらく来年2019年まで8のままにしてください。

Java 11の使用を主張する場合、以下について学ぶ必要があります。

  • 一般的なJavaモジュール化(module-info.Javaファイルを含む)。
  • IDE(Eclipseなど)およびその他のツールを、モジュール化とJava 11.の両方をサポートする新しいバージョンに更新します。
  • MavenやGradleなどのビルドツールでモジュールを構成する
  • EclipseなどのIDEでのモジュールの構成
  • JavaFXモジュールをダウンロードするか、Mavenなどの依存関係マネージャーを使用してダウンロードします

これらのポイントはここではカバーできないため、スタックオーバーフローに関する他の多くの質問でカバーされています。また、 Java 11 はまだ正式にリリースされていません。

おそらくこの記事が役立つでしょう JDK 11でJavaFXを使用してプロジェクトを作成する方法

Javaモジュール化の詳細については、 ブログ と本、 The Javaモジュールを読んでください。 System 、Nicolai Parlog。

6
Basil Bourque

約20台のコンピューターでこれに苦労しなければならなかったので、次のチェックリストを作成しました。

[ ] download javafx11 from javafx11's website, put on desktop
[ ] create a MODULE based project
[ ] right click project, go to BUILD PATH
[ ] add the downloaded javafx.base/control/graphics as external jar files
[ ] put the files in a package (eg: my_big_package)
[ ] put the following in the module.Java file:
module javafx11 {
    requires javafx.controls;
    exports my_big_package;
}
[ ] eat a donut from the break room

Eclipseと結婚していない場合、および/または単に学習しようとしている場合(または役に立たない教授/ TAを持つ学生である場合)、BlueJには現在JavaFXがすでに組み込まれているため、追加のセットアップやダウンロードは不要です。きちんとした!

0
Joseph Schmidt