web-dev-qa-db-ja.com

IntelliJがOpenJDK 11でJavaFX 11を認識できない

IntellJにJavaFXパッケージを認識させるのに問題があります。 OpenJDK 11を使用する新しいJavaFXプロジェクトでは、プロジェクトをビルドしようとすると、IntelliJはJavaFXパッケージを認識できません。

Mavenリポジトリからopenjfx:javafx-base-11をインポートしました。

私は他の質問を見ましたが、解決策は、バイトコードが正しいレベルにあること(私の場合)と、プロジェクト言語が正しいこと(私の場合)の確認に及ぶようです。

誰にもアイデアはありますか?

pic 1

pic 2

pic 3

編集:

エラー:

enter image description here

46

コメントで述べたように、 Starting Guide はJava 11およびJavaFX 11で始まる場所です。

Java 11の前と同じように機能するための鍵は、以下を理解することです

  • JavaFX 11はJDKの一部ではなくなりました
  • SDKまたは通常の依存関係(maven/gradle)として、さまざまなフレーバーで取得できます。
  • プロジェクトがモジュール化されていない場合でも、プロジェクトのモジュールパスに含める必要があります。

JavaFXプロジェクト

IntelliJで通常のJavaFXデフォルトプロジェクトを作成する場合(MavenまたはGradleなし)、SDKを here からダウンロードすることをお勧めします。 jmodもありますが、モジュール化されていないプロジェクトにはSDKが推奨されます。

デフォルトのプロジェクトを実行する簡単な手順は次のとおりです。

  1. JavaFXプロジェクトを作成する
  2. JDK 11を設定します(ローカルJava 11バージョンをポイントします)
  3. JavaFX 11 SDKをライブラリとして追加します。 URLは/Users/<user>/Downloads/javafx-sdk-11/lib/のようなものです。これを実行すると、JavaFXクラスがエディターで認識されるようになります。

JavaFX 11 Project

  1. デフォルトのプロジェクトを実行する前に、これらをVMオプションに追加するだけです。

    --module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml

  2. 走る

Maven

Mavenを使用してプロジェクトをビルドする場合、次の手順に従います。

  1. JavaFXアーキタイプを使用してMavenプロジェクトを作成する
  2. JDK 11を設定します(ローカルJava 11バージョンをポイントします)
  3. JavaFX 11の依存関係を追加します。

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

これを実行すると、JavaFXクラスがエディターで認識されるようになります。

JavaFX 11 Maven project

Mavenが必要な依存関係を管理していることに気付くでしょう:javafx.basesにjavafx.baseとjavafx.graphicsを追加しますが、最も重要なのは、必要なclassifierベースを追加することですプラットフォームで。私の場合、Mac。

Jars org.openjfx:javafx-controls:11emptyである理由は、すべてのクラスとネイティブ実装を含む3つの可能な分類子(windows、linux、macプラットフォーム)があるためです。

それでも.m2リポジトリに移動し、そこから依存関係を手動で取得する場合は、正しいものを選択してください(たとえば、.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar

  1. デフォルトのMavenプラグインを here のプラグインに置き換えます。

  2. mvn compile exec:Javaを実行すると、動作するはずです。

here で詳細に説明されているように、Gradleプロジェクトでも同様に機能します。

編集

言及された入門ガイドには、更新された ドキュメント およびIntelliJのサンプルプロジェクトが含まれています。

87
José Pereda

上記のどれも私にとってはうまくいきませんでした。発生した他のエラーをクリアするのに時間がかかりすぎました。これが最も簡単で最良の方法であることがわかりました。

これは、Jdk 11、12、およびOpenJdk12でもJavaFxを取得するために機能します!

  • ビデオは、JavaFx Sdkダウンロードを示しています
  • グローバルライブラリとして設定する方法
  • module-info.Javaを設定します(一番下のものを優先します)

module thisIsTheNameOfYourProject {
    requires javafx.fxml;
    requires javafx.controls;
    requires javafx.graphics;
    opens sample;
}

全部で5分しかかかりませんでした!!!

4
Yo Apps

Java FXがJDK 11の一部ではなくなったという問題。次のソリューションは、IntelliJを使用して機能します(NetBeansで試したことはありません)。

  1. JavaFXグローバルライブラリを依存関係として追加します。

    設定->プロジェクト構造->モジュール。モジュールで「依存関係」タブに移動し、「+」記号の追加->ライブラリ-> Java->リストからJavaFXを選択し、「選択項目の追加」、「設定の適用」の順にクリックします。

  2. JavaFXプロジェクトでソースファイル(src)を右クリックし、新しいmodule-info.Javaファイルを作成します。ファイル内に次のコードを記述します。

           module YourProjectName    
           { requires javafx.fxml;
             requires javafx.controls;
             requires javafx.graphics;
              opens sample;}
    

これら2つのステップは、JavaFXのすべての問題を解決します。

参考:The Learn Programmingチャンネルが作成したYou Tubeチュートリアルがあり、上記の詳細をわずか5分で説明します。あなたの問題を解決するためにそれを見ることもお勧めします: https://www.youtube.com/watch?v=WtOgoomDewo

4
Coder992