1

我在尝试编译或运行 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 文件中并部署在 JBoss default/deploy 文件夹中的 java 类。我在 JBoss default/lib 文件夹中有 jasperreports-4.1.2.jar 文件,所以我看不到如何存在类路径问题,因为可以看到 lib 文件夹中的所有其他 jar。

我的前端应用程序调用 HTTPServlet 类,然后使用反射调用包含 Jasper 代码的类。一切正常,直到调用这条线 -

JasperDesign jasperDesign = JRXmlLoader.load(strCompiledReportFile);

strCompiledReportFile 是正确的并且存在。当我通过 Eclipse 运行它时,这一切都有效,而不是从我的 HTTPServlet 类调用时。

我正处于想要抛弃 Jasper 的地步,因为我遇到了很多问题,所以这是最后一次机会沙龙。

为您可能提供的任何帮助而欢呼。

4

3 回答 3

1

我认为您缺少 jasper 在运行时依赖的几个 jar。检查此线程并确保您的类路径中也有这些罐子。

于 2012-06-13T14:19:14.690 回答
0

我不确定它是否也适用于您的情况,但我最近遇到了类似的问题,在未能加载字体(“读取字体数据的问题”)之后,Jasper Reports 会开始java.lang.NoClassDefFoundError为它的许多类提供虚假信息;此问题是由于java.awt.Font.createFont(int fontFormat, InputStream fontStream)尝试创建临时文件但失败而引起的。错误发生在 Tomcat 内部,但不在 Eclipse 内部;发生的事情是 Tomcat 自动将其 JVM 配置为指向其临时文件夹而不是默认文件夹,并且 Tomcat 的临时文件夹已被删除。

于 2012-10-23T10:47:42.900 回答
0

如果您尝试将 jasper 与 springboot 应用程序集成,请检查 .jrxml 是否在资源文件夹中。

于 2018-08-08T09:13:22.603 回答