1. ホーム
  2. java

[解決済み] javafx.util パッケージは存在しません。

2022-02-17 06:21:02

質問

Macでjavaのバージョン11.0.2を使用しています。 インポートするjavaファイルをコンパイルする際、以下のような問題が発生しました。 javafx.util.pair を取得しました。 error: package javafx.util does not exist . この問題を解決するための有用な資料があまりないのです。 私はオンラインでさまざまな提案を試しましたが、無駄でした。 現在、私はJavaFXパッケージを私のJavaディレクトリに追加しようとしています。 しかし、それは動作しません。

以下は、私が行ったことです。

  1. javafx-sdk-11.0.2フォルダーをダウンロードしました。 このフォルダの中に、legalとlibの2つのディレクトリがあります。

  2. の項目を移動しました。 legal ディレクトリーから /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/legal

  3. の項目を移動する lib ディレクトリーから /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib

  4. ターミナルを開き、この.javaファイルをコンパイルします。

質問_1: 上記で何か見逃していることはありますか?

Question_2:この方法が間違っているとしたら、どうしたらいいでしょうか?

解決方法は?

javafx.util.Pair の一部です。 javafx.base モジュール また、JavaFX SDKは、Java JDKの一部ではなくなったため、ご指摘のとおり、お使いのマシンにダウンロードする必要があります。

をたどればいいのです。 OpenJFXドキュメント を開始する方法について説明します。

を手に入れたら ダウンロード SDKで、JavaFX 11を実行したい場合、次のようなことが必要であることがわかります。 文書化 :

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

これは、Java 11を実行し、JavaFX SDKの独立した場所にあるモジュールをインクルードすることを意味します。なお javafx.controls を推移的依存関係として持っています。 javafx.basejavafx.graphics モジュールを使用します。

しかし、それらのドキュメントには、JavaFXのファイルをJDKにコピーしなければならないとは書かれていないでしょう。それはうまくいかないでしょう。

うまくいかない最大の理由。Java 11とJavaFX 11はモジュール化されており、たとえJavaFXのjarが path/to/javafx-sdk-11.0.2/lib JDKは大きなファイルを使用します。 /path/to/jdk-11.0.2.jdk/Contents/Home/lib/modules を実行するために java コマンドを実行します。このファイルはJDKがビルドされたときに作成されたものなので、そこにどんなjarを追加しても効果はない。

代替

ただし、docsには JavaFX SDKをJDKにコピーする方法は、新しいカスタムイメージを作成することです。以下を参照してください。 リンク , セクション Custom JDK+JavaFX image .

を使用することができます。 jlink を使用すると、特定のプロジェクトにアタッチされることなく、一部またはすべての JavaFX モジュールを含むランタイムイメージを作成することができます。

つまり、Java11とJavaFX11を組み合わせたイメージを作成し、それを新しいJDKとして使用することができるのです。これによって --module-path--add-modules の引数(少なくともJavaFXの観点では)。

実際、いくつかのディストリビューションでは これ すでに実施しています。

つまり、選択肢としては、通常のJDKとJavaFX SDKを使用する( --module-path--add-modules ) または、JavaFXを含むカスタムJDKを作成/使用する。