当我尝试编译或运行Jasper报告时,出现NoClassDefFoundError错误。Jasper报告NoClassDefFoundError
2012-06-13 14:46:26,710 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/jahtest].[jahtest]] Servlet.service() for servlet jahtest threw exception
java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)
我有一套java类封装在war文件中并部署在JBoss default/deploy文件夹中。 我在JBoss的default/lib文件夹中有jasperreports-4.1.2.jar文件,所以我看不到如何解决类路径问题,因为可以看到lib文件夹中的所有其他jar。
我的前端应用程序调用HTTPServlet类,然后使用反射来调用包含Jasper代码的类。一切工作正常,直到这一行被称为 -
JasperDesign jasperDesign = JRXmlLoader.load(strCompiledReportFile);
strCompiledReportFile是正确的,并存在。这一切在我通过Eclipse运行时都有效,而不是从我的HTTPServlet类中调用。
我现在想要抛弃贾斯珀,因为我遇到过很多问题,所以这是最后一次机会。
干杯可能会提供任何帮助。
除了在我的JBoss default/lib文件夹中包含所有需要的jar之外,还有其他地方应该引用它们吗? 我已经尝试将它们添加到我的war文件的WEB-INF \ lib文件夹中,我也尝试将它们添加到C:\ Program Files \ Java \ jdk1.6.0_13 \ jre \ lib文件夹中,但仍然获得同样的错误。 – user1167796
这太令人沮丧了!当我尝试通过servlet访问Jasper类时,我只会遇到错误。我可以成功访问自己的类,如果我调用一个使用任何Jasper代码的方法,那么我会得到这个classNotFound错误。 – user1167796
好的,这必须是我的servlet的类路径问题。我确定在通过Eclipse运行时,运行时类路径与通过我的servlet运行时不同。我已将所有必需的jar添加到我的war文件中的web-inf/lib文件夹中。它仍然不起作用!我是否必须在我的war文件中的清单文件中设置类路径?如果是这样,我该怎么做? – user1167796