当我试图编译或运行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)我有一组包装在war文件中的java类,部署在JBoss默认/deploy文件夹中。我在JBoss默认的/ lib文件夹中有jasperreports 4.1.2.jar文件,所以我看不出为什么会有类路径问题,因为可以看到lib文件夹中的所有其他jars。
我的前端应用程序调用一个HTTPServlet类,然后该类使用反射来调用包含Jasper代码的类。一切正常,直到这条线被称为-
JasperDesign jasperDesign = JRXmlLoader.load(strCompiledReportFile);strCompiledReportFile正确且存在。当我在Eclipse中运行它时,这一切都有效,但在我的HTTPServlet类中调用时就不行了。
我已经到了想抛弃Jasper的地步了,因为我对它有太多的问题,所以这是最后的机会了。
为你所能提供的任何帮助干杯。
发布于 2012-06-13 22:19:15
我认为你遗漏了一些jasper在运行时所依赖的jars。检查这个thread,并确保类路径中也有这些jars。
发布于 2012-10-23 18:47:43
我不确定它是否也适用于您的情况,但我最近遇到了一个类似的问题,在加载字体失败后(“读取字体数据时出现问题”),Jasper报表会开始为它的许多类提供虚假的java.lang.NoClassDefFoundError;这个问题是由于java.awt.Font.createFont(int fontFormat, InputStream fontStream)尝试创建临时文件而失败的。错误发生在Tomcat内部,而不是Eclipse内部;发生的情况是,Tomcat自动将其JVM配置为指向其临时文件夹,而不是默认的临时文件夹,并且Tomcat的临时文件夹已被删除。
发布于 2018-08-08 17:13:23
如果您正在尝试将jasper与springboot应用程序集成,请检查.jrxml是否在资源文件夹中。
https://stackoverflow.com/questions/11016575
复制相似问题