ほげにっき

hogedigoの日記

NoSuchMethodError HSSFCell.getRichStringCellValue

Seasarを用いた開発で、DB状態とエクセルファイルを比較するテストケース(S2Unit使用)が、ずっと通っていたのにいつの間にかエラーになっていた。

testIndex(com.godigo.mm.bookstore.action.BookAddActionTest)
java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFCell.getRichStringCellValue()Lorg/apache/poi/hssf/usermodel/HSSFRichTextString;
	at org.seasar.extension.dataset.impl.XlsReader.setupColumns(XlsReader.java:241)
	at org.seasar.extension.dataset.impl.XlsReader.createTable(XlsReader.java:217)


あれ??POIのバージョンがおかしなことになってるのかな?


というわけで、どのjarを見ているかを調べる。

System.out.println(
	HSSFCell.class.getClassLoader(). 
		getResource("org/apache/poi/hssf/usermodel/HSSFCell.class").getPath());

結果↓↓

file:/C:/Documents%20and%20Settings/xxx/.m2/repository/poi/poi/2.5.1-final-20040804/poi-2.5.1-final-20040804.jar

ありゃ、やっぱり。POIは3.0を見ていたはずなんだけどなぁ。
どこかに邪魔者がいるはずだ。


とりあえずお出かけするので、ここまで。


帰宅後追記:
参照している別プロジェクトがpoi-2.5.1に依存していた。
とりあえずそっちをpoi-3.0使う様にしたらエラーは出なくなった。


でもなんか釈然としないぞ。
別プロジェクトも3.0にして大丈夫かどうか分からんし。こういうとき、ちゃんとユニットテスト書いておけば・・・と後悔することになる。
今からでも書くか。