前提・実現したいこと
・Questionの型が存在しないとエラーメッセージが出てしまいました
・自分で作成した場所では、問題なく作動出来たのですが、このコードをダウンロードで取得するとQuestionの部分で、エラーメッセージが発生してしまいました・・・
エラーの改善方法を教えて頂くことはできないでしょうか・・・?
発生している問題・エラーメッセージ
Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException: Input stream must not be null at javafx.scene.image.Image.validateInputStream(Image.java:1128) at javafx.scene.image.Image.<init>(Image.java:706) at kadai.Test.start(Test.java:160) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) ... 1 more Exception running application kadai.Test
該当のソースコード
javafx
1 class seEventHandler implements EventHandler<ActionEvent> { 2 private Question[] questions; 3 private Question current; 4 public void handle(ActionEvent event) { 5 Stage stage = new Stage(); 6 BorderPane root = new BorderPane(); 7 root.setPadding(new Insets(10, 10, 10, 10)); 8 stage.setScene(new Scene(root, 600, 400)); 9 10 lb = new Label(); 11 lb2.setTextAlignment(TextAlignment.CENTER); // 12 lb3.setWrapText(true); // 折り返し 13 root.setCenter(lb); 14 15 bt1 = new Button(); 16 bt2 = new Button(); 17 18 // 質問の選択によってジャンプ先を変更 19 bt1.setOnAction(ae -> jump(current.Jump1)); 20 bt2.setOnAction(ae -> jump(current.Jump2)); 21 22 VBox box = new VBox(10, bt1, bt2); 23 box.setAlignment(Pos.CENTER); 24 root.setBottom(box); 25 26 try { 27 createCSV(); 28 loadCSV(); 29 } catch (IOException e) { 30 e.printStackTrace(); 31 } 32 33 jump(0); // 最初は先頭の質問 34 35 stage.show(); 36} 37 38 private void jump(int index) { 39 current = questions[index]; // 現在の質問を指定インデックスの質問に変更 40 41 42 if (current.Choice1 == null) { 43// ((Stage) button1.getScene().getWindow()).close(); // このStageを閉じるなら 44 45 Stage stage = new Stage(); 46 stage.setScene(new Scene(new Label(current.Text), 400, 300)); 47 stage.show(); 48 } else { 49 lb.setText(current.Text); 50 bt1.setText(current.Choice1); 51 bt2.setText(current.Choice2); 52 } 53 } 54 55 56private void loadCSV() throws IOException { 57 List<String> lines = Files.readAllLines(Paths.get("test.csv"), StandardCharsets.UTF_8); 58 59 questions = new Question[lines.size() - 1]; 60 for (int i = 1; i < lines.size(); i++) { 61 questions[i - 1] = new Question(lines.get(i)); 62 } 63} 64
試したこと
教科書や知人に読んだり聞いたりしてみると、恐らく「Questionのクラスが設定されていない」という予測に至ったのですが・・・
補足情報(FW/ツールのバージョンなど)
jdk14
>Questionの型が存在しないとエラーメッセージが出てしまいました
class Questionがどこにもないんじゃないですかね。
>自分で作成した場所では、問題なく作動出来たのですが、このコードをダウンロードで取得するとQuestionの部分で、エラーメッセージが発生してしまいました・・・
どういう意味か全く分かりません。
前回までの回答やコメントを注意深く読んでいただきたいのですが、
Question.javaを作って
[Eclipse - 診断機能の仕上げをしたい|teratail](https://teratail.com/questions/314155
の class Question を入れてください。
Caused by: java.lang.NullPointerException: Input stream must not be null
at javafx.scene.image.Image.validateInputStream(Image.java:1128)
at javafx.scene.image.Image.<init>(Image.java:706)
at kadai.Test.start(Test.java:160)
エラーログのこの部分を見る限りでは、kadai.Testクラスの160行目、startメソッドの中でエラーが発生しているようです。
これは推測になりますが、kadai.Testクラスの160行目ではjavafx.scene.image.Imageクラスの初期化を行っており、
InputStreamから画像を読み込もうとしていませんか?
1. kadai.Testクラスの160行にはどのような処理がありますか? この部分のソースコードが見れると問題解決が早まります。
2. 問題が発生している環境で、対象の画像は存在していますでしょうか?
TN8001さん、アドバイスをありがとうございます。試しに入れてみたところ、このようなエラーメッセージが発生してしまいました・・・
ーーーー
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: Input stream must not be null
at javafx.scene.image.Image.validateInputStream(Image.java:1128)
at javafx.scene.image.Image.<init>(Image.java:706)
at saisyuukadai.date1.start(date1.java:160)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
... 1 more
Exception running application saisyuukadai.date1
ーーーーー
nekoさん
ご回答ありがとうございます。
160行には、
Image im =newImage(getClass().getResourceAsStream("top.jpeg"));
といったコードがあります
また、指定されている写真は存在しているのですが・・・
そのコードとエラー内容を見る限りでは、クラスパス上にあるtop.jpegを読み込もうとして失敗しているようです。一般にクラスパス関連の問題は環境や設定に依存していることが多いです。エラーが発生する場合としない場合で、実行方法やプロジェクト構成に差分はないでしょうか?
回答1件
あなたの回答
tips
プレビュー