前提・実現したいこと
旧題:Applicationクラスのコンパイルが行えないので詳しい方が居たら助言をしてほしいです。
大学の授業でJavaを勉強しています。
個人的な制作物としてミニゲームを作ろうと思いPaneの上にPaneを乗っけれるかを試そうと思ったのですが、それ以前の部分でとりあえず実行ファイルを作ろうとして行ったコンパイルができません。
また、大学で講義を行っている先生も勉強中なので正確な回答が得られるか不明な為、ここで質問させていただきました。
発生している問題・エラーメッセージ
demo.java:8: エラー: パッケージjavafx.applicationは存在しません import javafx.application.Application; ^ demo.java:9: エラー: パッケージjavafx.stageは存在しません import javafx.stage.Stage; ^ demo.java:10: エラー: パッケージjavafx.sceneは存在しません import javafx.scene.Scene; ^ demo.java:11: エラー: パッケージjavafx.scene.layoutは存在しません import javafx.scene.layout.FlowPane; ^ demo.java:12: エラー: パッケージjavafx.scene.controlは存在しません import javafx.scene.control.Button; ^ demo.java:22: エラー: シンボルを見つけられません public class demo extends Application{ ^ シンボル: クラス Application demo.java:24: エラー: シンボルを見つけられません public void start(Stage stage){ ^ シンボル: クラス Stage 場所: クラス demo demo.java:30: エラー: シンボルを見つけられません Button button1 = new Button("ボタン1"); ^ シンボル: クラス Button 場所: クラス demo demo.java:30: エラー: シンボルを見つけられません Button button1 = new Button("ボタン1"); ^ シンボル: クラス Button 場所: クラス demo demo.java:31: エラー: シンボルを見つけられません Button button2 = new Button("ボタン2"); ^ シンボル: クラス Button 場所: クラス demo demo.java:31: エラー: シンボルを見つけられません Button button2 = new Button("ボタン2"); ^ シンボル: クラス Button 場所: クラス demo demo.java:33: エラー: シンボルを見つけられません FlowPane root = new FlowPane(); ^ シンボル: クラス FlowPane 場所: クラス demo demo.java:33: エラー: シンボルを見つけられません FlowPane root = new FlowPane(); ^ シンボル: クラス FlowPane 場所: クラス demo demo.java:37: エラー: シンボルを見つけられません Scene scene = new Scene(root); ^ シンボル: クラス Scene 場所: クラス demo demo.java:37: エラー: シンボルを見つけられません Scene scene = new Scene(root); ^ シンボル: クラス Scene 場所: クラス demo demo.java:42: エラー: シンボルを見つけられません launch(); // アプリケーション起動 ^ シンボル: メソッド launch() 場所: クラス demo エラー16個
該当のソースコード
Java
1import javafx.application.Application; 2import javafx.stage.Stage; 3import javafx.scene.Scene; 4import javafx.scene.layout.FlowPane; 5import javafx.scene.control.Button; 6 7// アプリケーション 8public class demo extends Application{ 9 // startメソッドをオーバーライドする 10 public void start(Stage stage){ 11 // stageの基本設定 12 stage.setTitle("タイトル"); 13 stage.setWidth(800); 14 stage.setHeight(500); 15 // Controlの設定 16 Button button1 = new Button("ボタン1"); 17 Button button2 = new Button("ボタン2"); 18 // Paneの設定 19 FlowPane root = new FlowPane(); 20 root.getChildren().add(button1); 21 root.getChildren().add(button2); 22 // 仕上げ 23 Scene scene = new Scene(root); 24 stage.setScene(scene); 25 stage.show(); 26 } 27 public static void main(String[] args){ 28 launch(); // アプリケーション起動 29 } 30}
試したこと
基本的にMethodではなく、packageやimportの問題だと思っており、そこを弄りました。以下は、弄った方法一覧です。
###Case1「importをpackageに置換」
importをpackageに置換しました。エラーは減りましたが以下のエラーが発生し、調べても解決には至りませんでした。
demo.java:2: エラー: class、interfaceまたはenumがありません package javafx.stage.Stage; ^ demo.java:3: エラー: class、interfaceまたはenumがありません package javafx.scene.Scene; ^ demo.java:4: エラー: class、interfaceまたはenumがありません package javafx.scene.layout.FlowPane; ^ demo.java:5: エラー: class、interfaceまたはenumがありません package javafx.scene.control.Button; ^ エラー4個
###Case2「頭にpackage クラス名をつける」
package.demo;
上の文をimportの前に追加しました。エラーは最初のエラーと同じでした。
packageについて全くと言っていいほど習っておらず困っています。
###Case3「友人に相談する」
ここで悩み友人に相談しました。そして、ファイルの構成が違う方法を教えていただきました。
ファイル構成 game -classes -package -src
なおかつpackageに指定されたjarファイル等を導入し、srcにコンパイルしたいdemo.javaを入れました。
その上でコマンドプロンプトで以下を入力しました。
javac -d classes -cp ./package* src\demo.java ※正確に表示されないので画像を参考にしてください
画像の通り、コンパイルは完了しましたが、実行に失敗しました。
classesファイルにクラスファイルは、生成されていました。
友人には色々手をつくしてもらったのでここで相談を終えました。
(元々Javaがメインで勉強してる言語ではない方だったので手間をかけては悪いと思いました)
補足情報
コンパイルとエディタについて
コンパイルはコマンドプロンプトにjavac ファイル名.javaでコンパイルしています。
エディタはサクラダエディタと言うテキストソフトを使い行っています。
また、開発環境としてはJDK1.12を利用しています。
※今回の問題で最新の物をDLして1.15も持っています。
不明な部分があったらコメントお願いします。
###追記
追記1
最初に回答していただいた方のパスの話で言われた方法の正確なやり方が分からずに思いつくパターンを一通りやりましたが、「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と出ます
追記2
題名を変更しました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 13:54