2015-11-17 120 views
0

我面对在应用程序运行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项目和企业项目的方式有什么不同吗?

感谢您的耐心和帮助..

+0

[Apache POI 3.2现已超过7年](http://poi.apache.org/changes.html#3.2-FINAL)!你为什么使用这样一个古老的版本? [此后修复的列表非常庞大](http://poi.apache.org/changes.html#3.2-FINAL)! – Gagravarr

+0

@Gagravarr你是对的。我最初使用3.13 poi jar(所有的ooxml jars)版本,这个版本给我带来了不同的运行时间负载问题。 – noviceProgrammer

+0

@Gagravarr即使我只使用HSSF工作簿相关的导入,使用最新的poi jar(从3.5到3.13版本),在运行时加载时,它会查找类org.apache.poi.ss。 usermodel.RichtextString。我也证实了罐子,他们似乎有这个类。只是为了让它与至少相关,我试图使用只加载HSSF包而不是SS包的旧版本。有任何想法吗? – noviceProgrammer

回答

0

这工作时,我放在罐子中,而不是EJB项目EAR项目的META-INF/lib 文件夹,并在库的依赖中引用它。