mof-brown

ずっとモフモフしてたい

Play framework で XStream を利用すると ClassCastException が発生する件

Java でオブジェクトのXML変換を行いたい場合、XStreamという素晴らしいライブラリがあります。

標準のXmlEncoder/XmlDecoderと比較すると、

  • 処理が高速
  • XMLの可読性が高い
  • 簡潔なコードとなる

と良いことだらけです。

しかし、先日 Play framework の開発で利用したいシーンが出てきたので以下のような実装してみたのですが、ClassCastException が発生して上手く動きませんでした。

[java]

final XStream xstream = new XStream(new DomDriver());

return (Hoge) xstrem.fromXML(xml);

[/java]

どうも toXML と fromXML で別の ClassLoader が利用されてしまっているようです。

Play を利用しているとよくハマるパターンですね。

なので、↓な感じで toXML/fromXML 実行時に ClassLoader を明示的に指定すれば解決しました。

[java]

xstream.setClassLoader(Play.classloader);

[/java]