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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

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

Q&A

1回答

9180閲覧

実行でエラーが出る。

harunyan333

総合スコア13

JavaFX

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

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

0グッド

1クリップ

投稿2019/05/27 23:37

編集2022/01/12 10:55

MacでeclipseでjavaFXを実行させようとしています。

実行しようとすると
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
このようなエラーが出てしまいます。
調べてみても似たエラーが探せず、よくわかりません。
このような場合は何が足りないのでしょうか??

ちなみにeclipsはPleiades All in One Eclipseを、
eclipseでe(fx)clipseをインストールしました。
またOpenJFX 12.0.1をインストールしました。
OpenJFXは実行の構成VM引数にlibのPATHを入れましたが、環境変数にはそもそもbinが入っていなかったのでPATHを入れていません。

ちなみに
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class sample1 extends Application
{
public static void main(String[] args)
{
launch(args);
}
public void start(Stage stage)throws Exception
{
BorderPane bp = new BorderPane();

Scene sc = new Scene(bp, 300, 200); stage.setScene(sc); stage.setTitle("サンプル"); stage.show();

}
}
を実行しようとしています。

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

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

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

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

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

m.ts10806

2019/05/28 00:19

実際のコードが提示されてないので不明な点は多いですが、 >OpenJFXは実行の構成VM引数にlibのPATHを入れましたが、環境変数にはそもそもbinが入っていなかったのでPATHを入れていません。 エラーからするとこれではないでしょうか。 ” Module javafx.controls not found”なので。パス通せばいけるのではと思うのですが(binというより実行ファイルへのパスという認識です)
harunyan333

2019/05/28 00:24

回答ありがとうございます。 実行ファイルへPATHを通すということはどういうことでしょうか?? libは通せました。binはなかったのでできませんでした。
m.ts10806

2019/05/28 00:31

libもbinもディレクトリ名ですよね。 例えばJavaであればjava.exeが存在するディレクトリにパスを通します。 それがたまたまbinという名前のディレクトリであるだけです。 Macはよくわかりませんが、調べた感じきちんと実行ファイルに通す必要がありそうですね。 https://skrb.hatenablog.com/entry/2018/05/29/210000 「なかった」ということは完全インストールできていないでは・・?という気はしています。
harunyan333

2019/05/28 00:40

そうです。ディレクトリ名です。java.exeがあるところなんですね。 別な場所にあるか見てみます。 別なバージョンもインストールしてみてみたんですけど、やはりbinがなかったんです…。 前にJDKをインストールした時JDKにはあったんですけど…。
guest

回答1

0

最新のJava12でJavaFXを使う場合、

  • (A)JavaFXはJDKの中から消えた

Java11以降でJavaFXがJDKから外れたので外部ライブラリーの使い方がわからないとコンパイル&実行ができない

  • (B)モジュール

Java9からJava言語仕様が追加されモジュールの概念が取り入れられました。これを理解しておかないと外部ライブラリーを用いたコンパイルや実行が正しく行えません。

こうした事情があってJavaFXは少々敷居の高いものになったようです。

このあたりは(B)Javaのモジュールの仕様、(A)EclipseなどのIDEにおける外部ライブラリーの参照設定方法を理解しておかないとうまく進められません。

自分は(※)Eclipse 2019-03 (Eclipse 4.11) + Java 12 Support for Eclipse 2019-03 (4.11) 4.11 (e(fx)clipseなし!)でやってみたのですが、module-info.javaを作らないと動かし方が面倒そうだったのでおとなしくmodule-info.javaにしかるべき内容を書いておきました。その内容については別の質問https://teratail.com/questions/191513#reply-284405で書いたので省略します。

それはさておき・・・こうした問題に対処するためには質問に以下の情報を明記するとよいと思います。

  • OpenJFXのjarをプロジェクトへどのように追加したかの正確な手順
  • 実行構成での各項目の設定内容

日本語でざくっと書く(OpenJFXは実行の構成VM引数にlibのPATHを入れました)よりは具体的なオプションをそのまま書いた方がよいと思います。

  • module-info.javaを作っているかどうか。作っているならその内容はどうなっているか
  • Applicationクラスのパッケージは何か

一部がなくても原因の特定はできそうですが、全部ないとどう書くべきか回答が書きづらい面があります。

ちなみに自分が気になった点があります。

OpenJFXは実行の構成VM引数にlibのPATHを入れました

これはうまい方法ではないと思います。多分より適切な方法はプロジェクトのビルドパスにOpenJFXのjar群を設定しておくことではないでしょうか。具体的な方法は

(1) Project > Properties

=>「Properties for プロジェクト名」のダイアログが開く。

(2) 左側にあるJava Build Pathを選択
(3) 右側にあるLibrariesタブを選択し、下に出てくる'Modulepath'を選ぶ
(4) 右側のAdd Library...ボタンを押す

=> Add Libraryダイアログが開く

(5) User Libraryを選びNext>を押す
(6) 右側のUser Libraries...を押す

=> Preferences (Filtered)ダイアログが開く

(7) New...ボタンを押す

=> New User Libraryダイアログが開く
(8) User library name:に"OpenJFX"などと入れてOKを押す
ダイアログが閉じて元のダイアログに戻る

(9) 上で追加したライブラリー名を選択
(10) 右にあるAdd External JARs...を押す

(11) ファイルダイアログでダウンロードしたOpenJFXのlibフォルダーの下にあるjarファイルを全て選ぶ(このあたりはWindowsの操作です。Macでも同様かはわかりません。多分Windowsより操作性が悪いってことはないと思います...)

(12) デバッグをしやすくするためにユーザーライブラリーに登録されている全てのJarのSource attachmentをlibフォルダにあるsrc.zipに設定しておくとよい(設定しなくても動くことは動く)

(13) ダイアログ下のApply and Closeを押す

User Libraryダイアログに戻るので今追加したライブラリー左にあるチェックボックスにチェックを入れる

(14) Finishボタンを押す

と、こんな感じです。
(Pleiadesを導入してないのでオリジナルのメニュー名です)

整理しますと

  • 最新のEclipse 2019-03 (Eclipse バージョン 4.11)を使う
  • Java 12 Support for Eclipse 2019-03 (4.11) 4.11をmarketplaceなどから導入

(早晩この手順は不要になるでしょう)

  • module-info.javaにしかるべき内容を書く
  • OpenJFXライブラリーはユーザーライブラリーとして定義しプロジェクトのモジュールパスへ追加しておく
  • 実行構成にはmain class:にJavaFXのアプリケーションクラスを指定する

基本的にこれでOKだと思います。(e(fx)clipseが入っていると一部もっと簡単になるかも知れませんが入れてないのでわかりません><)

投稿2019/05/28 01:37

KSwordOfHaste

総合スコア18392

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

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

KSwordOfHaste

2019/05/28 01:51

うーん、Mac固有の問題なら自分の回答は外してるかも知れません。もしそうだったゴメンナサイ。 https://openjfx.io/openjfx-docs/#install-javafx などを見る限りmacでもwindowsでもdllやdylibのパスをどうこうすることは必要なくモジュール参照だけ適切に指定すれば動くように見えますが・・・実際に目の前にmacがないので確認できずWindowsでの手順のみしかコメントできませんでした。あしからず。
harunyan333

2019/05/28 05:14

回答ありがとうございます。 *OpenJFXのjarはプロジェクト→ビルドパス→ライブラリーの追加→ユーザー・ライブラリー→新規→lib内のjarを全て選択して開くで設定させました。 *VM引数には --module-path=/User/ユーザー名/Downloads/javafx-sdk-12.0.1/lib --add-modules=javafx.controls,javafx.fxml を入れました。そのほかの実行の構成は何もいじってないです。 メイン・クラスにはapplication.sample1となっていました。 依存関係にはクラスパス・エントリーにJavaFXSample、JavaFX SDK、lib、JRE システム・ライブラリー [JavaSE-11]となっていました。ここもいじってないのでよくわかりませんけど... *module-info.javaは作っていません。 別の質問で回答者さんが書いているのを拝見させていただきましたが、どこで設定するのかがわかりませんでした。すみません...。 *ApplicationクラスパッケージはJavaFXSample>src>application>Main.javasample1.java、...などが入っています。 回答者さんが気になったlibのパスではなくjarの設定なんですけど、libの中にjarが入っているので間違ってはないのかなと個人的に思っていました。 参考にしたのはこちらです。 https://nompor.com/2019/01/26/post-4978/http://blog.livedoor.jp/shun0512_live/archives/16414430.html また、--add-modules=javafx.controls,javafx.fxmlで書いたJavafx.controls,javafx.fxmlはlibではなくlegalというフォルダーに入っていました。 --module-path=libのパスと--add-modules=legalのJavafx.controls,javafx.fxmlでlib、legalと2つでいいのかな?と思いました。 libならどっちもlibなのかなと初めは考えていたので...。 手順の方も書いていただきありがとうございます。 私がやったのと大体同じなのかなと思うのですが...。 Java 12 Support for Eclipse 2019-03 (4.11) 4.11は初めてみました! 最新のEclipseを使うには必要なんですね。 インストールしてみます。 module-info.javaに関しては全然わかっていないのでもう少し教えていただけると幸いです! 一応e(fx)clipsは入れたのでちょっとずつやりながらにしたいと思います。
KSwordOfHaste

2019/05/28 06:29

うーん、Java12を使うのであれば自分のお勧めはmodule-info.javaを作るやりかたです。module-info.javaを作らずにVM引数を指定するぐらいならいっそのことJava12をアンインストールしてjava8を入れなおし、あくまでJava8までの機能でアプリ作りを学んだほうがスムーズに進む気がします。最新のEclipseでもJava12はまだちゃんとサポートされてないようですし、Java8までならEclipseも安定して動いてくれるはずですので。 自分の場合はjava8では使えないvarによる変数宣言を使いたかったのでJava10を使っています。新しすぎるJavaバージョンはIDEがきちんとサポートできてない(まだバグが残っている)ということがあるのであまり使いたくありません。自分は一応java11, java12をインストールしてはいますが「うまく動くようなら使ってみようか」程度にしか考えていません。IDEのサポートがまだ不十分なうちはあれこれ調べて苦労するより、そのうちちゃんとサポートされるでしょうからそれを待つのも手だと思います。
harunyan333

2019/05/29 14:16

教科書でのバージョンも確認してみて大丈夫であればjava8あるいはjava10をインストールしてやってみます。ちなみにeclipseはそのまま使って大丈夫ですかね??その際にJava 12 Support for Eclipse 2019-03 (4.11) 4.11はインストールしていた方がいいですか?
KSwordOfHaste

2019/05/29 16:47

>(1)eclipseはそのまま使って大丈夫か? >(2)Java 12 Support for Eclipse 2019-03 (4.11) 4.11はインストールすべき? 正直いえば自信ないですが、Java12を入れない前提での自分の考えは (1)YES(2)NOです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問