私はJavaFxを使ってリストにアイコンを表示するプログラムで作業しています。 txtドキュメントから特定のIDを検索するために使用される静的クラスを作成しました。もともと、静的ブロックは、各行に定義された項目のIDと名前を追加しますが、これらの問題が発生したため、問題の原因を見つけようとしました。Java:プログラムが読むときにtxtファイルの内容を表示することができません
代わりに、私はちょうど静的ブロックのテキストファイルの内容を見て、それをコンソールに出力しました。
これは、参考のために私のコードです:
public class ItemIds {
public static int UNDEFINED_ID = -1;
private static HashMap<String, Integer> items;
static {
items = new HashMap<String, Integer>();
System.out.println(new File("res/ids/item ids.txt").exists());
try {
//should print out every line in the text file
Files.lines(Paths.get("res/ids/item ids.txt")).forEach(s -> {
System.out.println(s);
});
} catch (IOException e) {
System.out.println("Unable to read specified file.");
e.printStackTrace();
}
}
public static int getId(final String name) {
final Integer id = items.get(name);
return id != null ? id : UNDEFINED_ID;
}
}
はしかし、私はこの静的クラスが初期化されるのですかと静的ブロックが呼び出されることは非常に奇妙です。エラーが発生していないすべての単一の行を、行10691に到達するまで「行内の例外」JavaFXアプリケーションスレッド「java.lang.ExceptionInInitializerError」をスローするまでリストします。
これは特に奇妙なことですが、小さなテキストドキュメント(少ないエントリ)で作業すると、すべて正常に動作しているようです。ファイルはほぼ14000行から構成されているため、作業できるようにするには〜4000行を削除する必要があります。
これを行う理由は何ですか?ご意見はありがとうございます - ありがとうございます
stacktrace全体をお待ちください... – Seelenvirtuose
モデルクラスの静的ブロックにファイル集中型コードを置くのはなぜですか?それが正しく初期化された後、あなたのUIからそのコードを適切に呼び出すだけではどうですか? – ManoDestra
@ManoDestra [bamboozling intensifies] – flakes