質問: new Scene(root,400,400); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } ``` 【プロジェクトの構成】 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/60ae356f433d764a787c571198d28401.jpeg) ### 試したこと 「JDK11以降、JavaFXを別で用意する必要がある」と気付き、途中でインストールしました。 インストールしたJavaFXフォルダをJDKフォルダ直下におき、システム環境変数の設定でPathに「C:\Program Files\Java\jdk-14.0.2\javafx-sdk-14.0.2.1\lib」を追加しました。 (このあたり自信がありません...) しかし、javafxが見つからないというエラーが出ている状態です。 ■8/21追記 Toshimichiさんにご回答いただいた1つ目の方法、「必要となるjarを置いておく」とは jdk-14.0.2\libフォルダに、”javafx-sdk-14.0.2.1\lib内のjarファイル” を入れるという意味でよかったでしょうか? 結果は、同じエラーが出ています。 ■8/22追記 ※ソースコードやプロジェクトの構成を、「該当のソースコード」のように変更しました。 jdk-14.0.2\libフォルダの中身を元に戻し、Eclipseの プロパティー→Javaのビルド・パス→ライブラリー→JARの追加 で、”javafx-sdk-14.0.2.1\lib内のjarファイル”を追加しました。 javafxは認識されたようですが、別のエラーが出ます。 ### 補足情報(FW/ツールのバージョンなど) ・jdk-14.0.2 ・Eclipse 4.16.0 ・e(fx)clipse 3.6.0 ・JavaFX Windows x64 SDK 14.0.2.1 【参考にしたサイト】 ・初めてJavaを触った人間がEclipseでJavaFXのGUIアプリを起動するまで https://ateitexe.com/first-develop-javafx-application/#5 ・プログラム備忘録 etc http://higehige0.blog.fc2.com/blog-entry-36.html
回答: PATHというのは、コマンドプロント等からコマンドを実行する際にコマンドの居場所を探す場所を表します。 例えばコマンドプロントで ``` java -v ``` と実行するとPATHに含まれている ``` C:\Program Files\Java\jdk-14.0.2\bin ``` からjava.exeを見つけ出して実行します。つまりPATHはコマンド実行時に必要なのであって、今回の場合には一致しません。 JavaFXをライブラリに追加するには3つの方法があります。 1つ目はJavaのデフォルトライブラリに追加する方法です。 ``` C:\Program Files\Java\jdk-14.0.2\lib ``` というフォルダがあると思うので、そこに必要となるjarを置いておくとJVM起動時に自動的にライブラリとして追加されます。 2つ目はコマンド実行時にライブラリとして追加する方法です。 実行時にオプションを付けて実行します。 ``` java --module-path "javafx/lib" --add-modules=javafx.base --add-modules=javafx.controls --add-modules=javafx.fxml --add-modules=javafx.graphics --add-modules=javafx.media --add-modules=javafx.swing --add-modules=javafx.web -jar "executable.jar" ``` javafx/libをダウンロードしたjavafxのlibディレクトリ、executable.jarを作成したjarファイルに置き換えて実行してください 3つ目は作成したjarの中にライブラリを含めてしまう方法です。頒布されるjarには多くの場合この手法が使われますが、MavenやGradleといったビルドツールなしでは難しいので今回は省略させていただきます。実際の開発現場ではビルドツールが使われているため、この機会に覚えてしまっても良いかと思われます。