Eclipse + JavaFXでGUIアプリを作成

2020-02-06

趣味プラスアルファでWindowsのGUIアプリを作成するため、無料の開発環境Eclipse+今後主流になっていくであろう(←嘘でした)JavaFXというものをやってみようと思い、軽い気持ちで挑んでみました。

始めるまでが大変

しかし開発環境の環境構築自体で何度もつまづき、数日を要してしまいましたが、なんとかスタートラインに立てました。

↓テストで作成したプログラム ウィンドウタイトルつけなきゃ。

要するに、自宅のパソコンでお金をかけずにWindowsのアプリケーションが作成できる状態になったということです(多分Macでも動作するのだと思います)。

あとは、作りたい機能を実現していくだけ。

ここからは(ここまでに比べれば)楽なはず。

以前に勤めていた会社では有料の開発ツールを使ったり、開発環境構築手順書とかを先行調査チームが作っていてくれていたので、比較的楽に開発できる状態までこぎつけることができたのだけど、自分でゼロからやると結構大変なのだと実感です。JavaFXは過渡期なのか、調べても全然問題を解決できず。

というか、プログラミング言語としてのJavaは楽なのですが、JDKのバージョンキモすぎだし、Java 11からJDKにJavaFX が同梱されなくなったとか大変すぎるし。

開発環境

当方の開発環境について記載しておきます。

  • Windows10 64bit
  • Eclipse Version: 2019-12 (4.14.0)
  • Java11

Eclipseのバージョンも紛らわしい!

Eclipseについては、Pleiades All in One ダウンロードから最新版の「Eclipse 2019-12」というものをダウンロードして使いました。

結果、問題なかったのですが、しばらく動作させることができずに疑心暗鬼になったこともあり、このEclipseのバージョンさえ疑ってしまうという状況に。

Eclipseは2018-08というバージョンから、バージョン表記が変わったようで、古い方から順に以下になっています。

Eclipseplatform
Eclipse 4.7 Oxygen4.7.3
Eclipse 4.8 Photon4.8.0
Eclipse 2018-084.9.0
Eclipse 2019-122019-12(4.14.0)

うまく動かないので疑心暗鬼になっているところにこの「4.14.0」という、前のモノよりも古くも見えるような怪しいバージョン。

結果的にこれは、以前のものとはバージョン体系が異なるので「4.9.0よりも新しい4.14.0」ということなのですが、紛らわしいったらありゃしない。

エンジニアには当たり前なのかもしれませんが、小学生でも中学生でも高校生でも大学生でも普通に考えると4.9>4.14です。

ただし、ここでいう「4.9」は「4.09」のことでしょう。

ド素人ですんません。でもやっぱり、ソートしても希望通りに並ばないし、ゼロサプレスしない方がいいというかゼロパディングしてほしいと思うんだけどな~

環境構築でハマったところ

環境変数やらクラスパスやらいろいろ調べましたが、私の問題は「module-info.java」ほぼこれのみでした。

環境変数とかクラスパスは大体分かっていたのですが、この「module-info.java」というものは初めて知りました。レベル低くてすんません。

XX.Mainを検出およびロードできませんでした

「メイン・クラスapplication.Mainを検出およびロードできませんでした」

上記エラーを解消するのに膨大な時間をかけてしまいました。

私の場合は、module-info.javaを作成することで「この問題は」解決しました。

Eclipseで[構成]→[module-info.javaを作成]

作成したmodule-info.javaの中身は(他のサイトを参考に、この時点では)以下にしました。

module test010 {
	exports application;

	requires javafx.base;
	requires javafx.controls;
	requires javafx.fxml;
	requires javafx.graphics;
}

10個目のテストプログラム…それだけ試行錯誤したということです。

does not "opens application" to module javafx.fxml

「Unable to make field private javafx.scene.control.TextField application.SampleController.field_Name accessible: module testXXX does not "opens application" to module javafx.fxml」

次に躓いたのがこちら↑

こちらは比較的早めに解決できました。

上で書いたmodule-info.javaの最後に1行

opens application to javafx.fxml;

を追記して解決でした。

module test010 {
	exports application;

	requires javafx.base;
	requires javafx.controls;
	requires javafx.fxml;
	requires javafx.graphics;

	opens application to javafx.fxml;
}

こういう情報って、Qiitaとかに書いた方がいいんでしょうかね。特にQiitaに書くメリットが見つからなかったのと、少しでも自分のブログのPV稼ぐためにここに書いた次第です。

ログ・ファイル null を参照してください。

「エラーが発生しました。ログ・ファイル null を参照してください。」

ちなみに、私の環境でEclipse起動時にこの↑↓のエラーが出るのは、管理者として実行しなかった場合です。

「null」って… ありがちなバグですね。

誰かの役に立ちますように。そして当ブログの他の記事も読まれますように。

2020年03月23日追記

上の記事を書いた2020年02月06日のすぐあとにもJavaに関するあまりよくないニュースがありました。

Javaはもうオワコンですね。

PythonのwxPythonでGUIプログラムを作り、PyInstallerでexe化します。ライセンス的に商用も大丈夫そうです。

さよならJava。

ありがとうJava。

永遠に眠れJava。

以上。

後記

最後までお読みくださりありがとうございます。

こんなに更新したのに、現在はほぼ誰も見ていないゴミカスクズ無価値ブログです。

よければ(はてな)ブックマークや拡散をお願いいたします。

更新の原動力として励ましが欲しいのです…<(_ _)>

当ブログ内お薦め記事