質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

4796閲覧

Eclipse上でJavaFXを動かしたい

Okam0chan

総合スコア11

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/08/19 15:39

編集2020/08/22 14:08

前提・実現したいこと

Eclipse上で、JavaFXを使ったGUIを作成したいです。
JavaFXの使い方が間違っているのか実行時にエラーが発生します。

よろしくお願いします。

発生している問題・エラーメッセージ

【コンソール】 エラー: メイン・クラスapplication.Mainを検出およびロードできませんでした 原因: java.lang.ClassNotFoundException: application.Main

該当のソースコード

【Main.java】 package application; import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import javafx.fxml.FXMLLoader; public class Main extends Application { @Override public void start(@SuppressWarnings("exports") Stage primaryStage) { try { BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("JavaFX.fxml")); Scene scene = 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); } }

【プロジェクトの構成】
イメージ説明

試したこと

「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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PATHというのは、コマンドプロント等からコマンドを実行する際にコマンドの居場所を探す場所を表します。
例えばコマンドプロントで

java -v ```と実行するとPATHに含まれている

C:\Program Files\Java\jdk-14.0.2\bin

JavaFXをライブラリに追加するには3つの方法があります。 1つ目はJavaのデフォルトライブラリに追加する方法です。

C:\Program Files\Java\jdk-14.0.2\lib

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といったビルドツールなしでは難しいので今回は省略させていただきます。実際の開発現場ではビルドツールが使われているため、この機会に覚えてしまっても良いかと思われます。

投稿2020/08/19 18:42

編集2020/08/19 18:44
Toshimichi

総合スコア97

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Okam0chan

2020/08/20 15:51 編集

ご回答いただきありがとうございます。 PATHの設定は今回、関係なかったのですね。 教えていただいた1つ目の方法、「必要となるjarを置いておく」とは jdk-14.0.2\libフォルダに javafx-sdk-14.0.2.1\libの中身(.jarファイル、javafx.propertiessrc.zip)を入れるという意味でよかったでしょうか? これにより、Eclipseのプロジェクト内のJREシステム・ライブラリーにjavafxが追加されるのかなと思ったのですが、やはり同じエラーが出てしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問