我面对在应用程序运行java.lang.NoClassDefFoundError的共同问题,当我尝试创建并写入使用POI 3.2最终版本(只.xls文件的工作簿)。我已经使用ejb和web模块创建了该实用程序,作为企业应用程序项目。工作簿的创建是通过一个EJB定时器来触发的,该定时器在项目加载到服务器时启动。运行时间HSSFWorkbook类加载错误
类org.apache.poi.hssf.usermodel.HSSFWorkbook
的运行时间失败。 只要我知道库引用。我已经把poi 3.2 final jar放在ejb/META-INF/lib/
文件夹中。我还从Build路径的Order和Export选项卡中添加了它,并在Java EE依赖项中引用了它。对于好的措施,我已将它放在网络项目的web-inf/lib
文件夹中,但无济于事。
在同一个应用程序中,我也使用Jsoup jar。在参考上述地方后,Jsoup
工作正常。
奇怪的是,当我使用普通的实用程序计时器创建与Web应用程序(动态Web项目)相同的服务时,不会发生此错误。工作簿被创建。该罐放置在web-inf/lib
文件夹中。
有人能让我知道这个jar被引用的web项目和企业项目的方式有什么不同吗?
感谢您的耐心和帮助..
[Apache POI 3.2现已超过7年](http://poi.apache.org/changes.html#3.2-FINAL)!你为什么使用这样一个古老的版本? [此后修复的列表非常庞大](http://poi.apache.org/changes.html#3.2-FINAL)! – Gagravarr
@Gagravarr你是对的。我最初使用3.13 poi jar(所有的ooxml jars)版本,这个版本给我带来了不同的运行时间负载问题。 – noviceProgrammer
@Gagravarr即使我只使用HSSF工作簿相关的导入,使用最新的poi jar(从3.5到3.13版本),在运行时加载时,它会查找类org.apache.poi.ss。 usermodel.RichtextString。我也证实了罐子,他们似乎有这个类。只是为了让它与至少相关,我试图使用只加载HSSF包而不是SS包的旧版本。有任何想法吗? – noviceProgrammer