これを正しく説明できればと思います。私はJavolutionライブラリを使用してXML構成ファイルの読み取りと書き込みを行っています。XMLStreamReader/Writerを使用しています。読んでいる間、私はタグを読んで、その属性をLinkedHashMapに保存しようとしています。ただし、例外がスローされています。これは、いつスローされ、コードで現在何が行われているのかによって、意味がないように見えます。
Eclipseデバッガーを使用すると、属性のキーと値がマップに追加されているときに例外がスローされます。
public class Element {
private HashMap<String, String> attributes = new LinkedHashMap<String, String>();
...
public void setAttribute(String key, String value) {
...
attributes.put(key, value);
}
}
キーと値が追加された直後に、this
Javolutionからの例外をキャッチします。
javolution.xml.stream.XMLStreamException: Local name cannot be null
どちらでもないkey
かvalue
、nullです。それらがマップに追加されているとき、例外がスローされている場所を確認するためにコードにさらに踏み込むことはできません。スタックトレースはなく、例外がスローされる場所や方法を説明するファイル/行番号はどこにも表示されません。
Javolutionの古い実装をグーグルですばやく検索すると、この特定の例外はXMLStreamWriterImplタイプのいくつかのメソッドを使用してのみスローされることがわかります。これらのメソッドを使用するたびにブレークポイントを設定しましたが、デバッガーはコードのかなり後の方まで使用されているブレークポイントをキャッチしません(そして私のlocalName変数は宣言時に初期化されます)。
この例外がスローされる理由を特定する方法について、誰かアドバイスがありますか?
スタックトレース:
Java HotSpot(TM) 64-Bit Server VM[localhost:3999]
Thread [main] (Suspended)
XMLImplMain$Element.setAttribute(String, String) line: 827
XMLImplMain.translate(Element) line: 133
XMLImplMain.translate(Element) line: 140
XMLImplMain.translate(Element) line: 140
XMLImplMain.loadXML(String) line: 118
Bootstrap.main(String[]) line: 32
Thread [EventWriter] (Running)