プログラムにエラーは生じない
おそらくソースファイルの先頭行付近の行番号の左側あたりに赤の×印が出てると思います。つまり実は「ソースコードに問題がある」のです。
エラーメッセージの意味はdsuzukiさんが回答しておられますが、なぜこうなるかはJava9から導入されたモジュールの仕様に関係してきます。(これからJavaを学ぶ方はモジュールについて最小限の知識が必要になると思います。下手をするとJava8以前を前提としたサンプルだとHelloWorldでさえ動かないなんてことになりかねません。)
質問者さんはJava12を動かすためにmarketplaceなどでJava 12 Support for Eclipse 2019-03 (4.11) 4.11を導入済みと思います。それ入れてないとご質問のエラーが出るところまで到達しませんので。
さてプロジェクトを作るときデフォルトでmodule-info.javaが生成されますが。ここには外部モジュールの参照設定や自分自身で書いているアプリケーションのパッケージの公開宣言などを記述することになっています。どのようなJavaFXアプリケーションを書かれているか不明ですが、例えばごく簡単な以下のサンプルを仮定してみますと・・・
java
1package com.example.jfx;
2
3import javafx.application.Application;
4import javafx.geometry.Pos;
5import javafx.scene.Scene;
6import javafx.scene.control.Label;
7import javafx.scene.layout.BorderPane;
8import javafx.scene.text.Font;
9import javafx.stage.Stage;
10
11public class HelloJfx extends Application {
12 @Override
13 public void start(Stage stage) throws Exception {
14 var root = new BorderPane();
15 var label = new Label("Hello JFX");
16 label.setFont(Font.font(32));
17 label.setAlignment(Pos.CENTER);
18 label.setPrefSize(200, 100);
19 root.setCenter(label);
20 stage.setScene(new Scene(root));
21 stage.show();
22 }
23}
これを正常にコンパイルするためにはmodule-info.javaはこんなふうになっていることが期待です。
module-info.java
java
1module your.favolite.module.name { // モジュール名は好きに付けます
2 exports com.example.jfx; // (A) Applicationクラスが存在するパッケージをexport
3 requires javafx.graphics; // JavaFXアプリケーションを作るときに必須のモジュール
4 requires javafx.controls; // JavaFXの色んなコントロールを使うときに必須のモジュール
5}
さて、(A)をみますとアプリケーションで定義したもののうち外部へ公開するクラスをパッケージ単位で指定することがわかります。もし公開するクラスがデフォルトパッケージにあるとパッケージ名がないので
exports ;
などとしか表現できなくなりますが、そのような病的なexportsは許さない仕様なのでしょう。それゆえ事実上デフォルトパッケージはもはや「使うべきでないパッケージ」になったといえると思います。
厳密には互換性のためにmodule-info.javaをプロジェクト内で作らずにアプリケーションを記述することもできます。そのかわりコンパイル(javacコマンド)や実行(javaコマンド)に特別なオプションを指定しなくてはならなくなります。Eclipseがそういうケースをうまく配慮してくれるのかどうか自分にはわかりません。EclipseでないIDEを使っているためです。自分が使っているのはIntelliJ IDEAですがこのIDEですと最近のバージョンアップでmodule-info.javaを作らなかったときに自動的に必要なオプションを補完してコンパイルしたり実行してくれるようになったようです(ちょっと古いバージョンでは実行構成に一々オプションを指定せねばならずかなり面倒でした)。Eclipseは大変よく使われているIDEですので現時点でも(あるいは近い将来)そういう配慮がなされるような気がします)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/27 23:06
2019/05/27 23:55