Commons Digester で XML ファイルを解析していますが、コードの何が問題なのかわかりません。この java.lang.NullPointerException で立ち往生しています。
これはコードです: http://pastie.org/1708374
これは例外です: http://pastie.org/1708371
愚かなエラーだと思います
ありがとう
Commons Digester で XML ファイルを解析していますが、コードの何が問題なのかわかりません。この java.lang.NullPointerException で立ち往生しています。
これはコードです: http://pastie.org/1708374
これは例外です: http://pastie.org/1708371
愚かなエラーだと思います
ありがとう
さて、これが問題です:
if (centroids.length == 0)
centroids
私が見る限り、値を割り当てることは決してないので、常にnullになります。次に、上記の行で逆参照しようとすると、 がスローされNullPointerException
ます。
コードの次の行で使用しようとした最初の行は、centroids[0]
Java 配列を本当に理解していないことを示唆しています。List
おそらく、あなたは本当にいくつかの説明が欲しかったのですか?
また、常に同じ 5 つのキーを持つ の代わりに、タイトル、説明、タグ、時間、およびイベントのプロパティを持つタイプ (例: ) を作成することを強くお勧めします。次に、次を作成できます。Map<String, String>
Centroid
centroids
List<Centroid>
List<Centroid> centroids = new ArrayList<Centroid>();
その後、データを取得すると...
Centroid centroid = new Centroid(...);
centroids.add(centroid);
ああ、あなたは現在==
文字列の比較にも使用しています...そうしないでください: を使用してください。equals
そうしないと、文字列参照を比較することになります。
NPE スタックトレースの読み取り方法に関する一般的な注意事項:
例外スタック トレースを取得したら、Caused by 行とその次の最初の行を確認します。
Caused by: java.lang.NullPointerException
at CentroidGenerator.nextItem2(CentroidGenerator.java:31)
ほとんどの場合、null ポインター例外は、オブジェクトに対してメソッドを呼び出そうとしたときに、そのオブジェクトが null であるときに発生します。上記のエラー メッセージは、CentroidGenerator.java の 31 行目でエラーが発生していることを示しています。
if (centroids.length == 0) {
メソッドの呼び出しは object.method の形式であるため、このインスタンスでは null であるオブジェクトはセントロイドであることがわかります。
null を視覚的に判断する簡単な方法は、例外が発生した行のドットの左側にあるものを確認することです。複数のメソッド呼び出しがある行では、どのオブジェクトが null であるかがすぐにはわからないため、さらに調査が必要になる場合がありますが、この例ではそうではありません。
問題を解決するには、Jon の回答を参照してください。