Это достаточно распространенная проблема, поэтому в часто задаваемых вопросах Apache POI есть запись о ней, который даже включает код для определения того, что не так
По сути, где-то еще в вашем пути к классам (возможно, с вашего сервера) есть более старая копия Apache POI. Когда ваш код запускается, он вызывает загрузку класса, и ваш загрузчик классов бесполезно выбирает более старый jar, а не новый.
Если вы запустите код из FAQ:
ClassLoader classloader =
org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource(
"org/apache/poi/poifs/filesystem/POIFSFileSystem.class");
String path = res.getPath();
System.out.println("Core POI came from " + path);
Затем это скажет вам, откуда загружается ядро POI. Я могу практически гарантировать, что это будет не та банка, которую вы ожидаете... Уничтожьте старые банки POI (все!), тогда все будет готово.
Ну, в основном хорошо идти. Apache POI 3.7 исполнилось 3 года, поэтому было много исправления с тех пор, поэтому обновление стоит того!
person
Gagravarr
schedule
16.10.2013