0

Android アプリケーションで XStream を使用して XML ファイルから TreeMap を読み込もうとしています (以前は XStream を使用して XML ファイルも作成していました)。

クラスの静的メソッドでこれを行うだけです

File f = new File(Environment.getExternalStorageDirectory(), "map.xml");

XStream xStream = new XStream(new DomDriver());

@SuppressWarnings("unchecked")      
TreeMap<String,Object> map = (TreeMap<String,Object>) xStream.fromXML(f);

そして、TreeMap の値を問題なく使用します...初めてです。

問題は、メソッドを 2 回目に呼び出す場合、最初の実行の直後に実行するか、しばらくしてから実行するかに関係なく、次のようになります。

05-24 08:33:53.404: E/AndroidRuntime(15543): FATAL EXCEPTION: main
05-24 08:33:53.404: E/AndroidRuntime(15543): com.thoughtworks.xstream.converters.ConversionException: null : null
05-24 08:33:53.404: E/AndroidRuntime(15543): ---- Debugging information ----
05-24 08:33:53.404: E/AndroidRuntime(15543): cause-exception     : java.lang.NullPointerException
05-24 08:33:53.404: E/AndroidRuntime(15543): cause-message       : null
05-24 08:33:53.404: E/AndroidRuntime(15543): class               : java.util.TreeMap
05-24 08:33:53.404: E/AndroidRuntime(15543): required-type       : java.util.TreeMap
05-24 08:33:53.404: E/AndroidRuntime(15543): converter-type      : com.thoughtworks.xstream.converters.collections.TreeMapConverter
05-24 08:33:53.404: E/AndroidRuntime(15543): path                : /tree-map
05-24 08:33:53.404: E/AndroidRuntime(15543): version             : 0.0
05-24 08:33:53.404: E/AndroidRuntime(15543): -------------------------------
05-24 08:33:53.404: E/AndroidRuntime(15543):    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
05-24 08:33:53.404: E/AndroidRuntime(15543):    at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
[...]
05-24 08:33:53.404: E/AndroidRuntime(15543): Caused by: java.lang.NullPointerException
05-24 08:33:53.404: E/AndroidRuntime(15543):    at java.util.TreeMap.find(TreeMap.java:277)
05-24 08:33:53.404: E/AndroidRuntime(15543):    at java.util.TreeMap.putInternal(TreeMap.java:240)
05-24 08:33:53.404: E/AndroidRuntime(15543):    at java.util.TreeMap.put(TreeMap.java:186)
05-24 08:33:53.404: E/AndroidRuntime(15543):    at java.util.AbstractMap.putAll(AbstractMap.java:381)
05-24 08:33:53.404: E/AndroidRuntime(15543):    at com.thoughtworks.xstream.converters.collections.TreeMapConverter.populateTreeMap(TreeMapConverter.java:150)
[...]

同じファイルで。実際、ファイルを読み取って XStream に文字列として渡そうとすると、同じ例外が発生します (ただし、XML 文字列は問題なく作成されます)。

原因が何であるかを知っている人、または同じ問題を経験したことがあり、それを修正する方法を知っている人はいますか?

ありがとう!

4

1 に答える 1

1

OK、それは TreeMap と Android に問題があるように見えました... HashMap を使用すると、問題なく動作します :)

于 2012-06-01T15:31:57.597 に答える