Servlets Jasper报告NoClassDefFoundError

Servlets Jasper报告NoClassDefFoundError,servlets,jboss,jasper-reports,Servlets,Jboss,Jasper Reports,在尝试编译或运行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: Co

在尝试编译或运行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类调用时就不会起作用

我已经到了想抛弃贾斯珀的地步,因为我有太多的问题,所以这是最后一次机会



为您可能提供的任何帮助干杯。

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

我认为您缺少了jasper在运行时依赖的几个JAR。检查此项并确保您的类路径中也有这些JAR。

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

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

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

如果您试图将jasper与springboot应用程序集成,请检查.jrxml是否位于resources文件夹中

谢谢你的建议。刚刚检查过,所有建议的jar文件都已包含在我的JBoss default/lib文件夹中。我确信您在运行时丢失了一些jar,很难说是哪一个。stacktrace有更多的信息吗?你能检查编译时出现的JAR和运行时的JAR吗?编译时应该有一些jar在运行时丢失。正如JasperReports所需的jar列表一样。我如何检查运行时使用的jar而不是编译时使用的jar?感谢您的建议。刚刚检查过,所有建议的jar文件都已包含在我的JBoss default/lib文件夹中。我确信您在运行时丢失了一些jar,很难说是哪一个。stacktrace有更多的信息吗?你能检查编译时出现的JAR和运行时的JAR吗?编译时应该有一些jar在运行时丢失。正如JasperReports的必需jar列表是一个参考。我如何检查运行时使用的jar而不是编译时使用的jar?除了将所有必需的jar都放在我的JBoss default/lib文件夹中之外,还有其他地方应该引用它们吗?我尝试过将它们添加到war文件的WEB-INF\lib文件夹中,也尝试过将它们添加到C:\Program Files\Java\jdk1.6.0\u 13\jre\lib文件夹中,但仍然出现相同的错误。这太令人沮丧了!我只有在尝试通过servlet访问Jasper类时才会出现错误。我可以成功地访问我自己的类,但是如果我调用一个使用任何Jasper代码的方法,那么我会得到这个classNotFound错误。我已经确定,在Eclipse中运行时的类路径与在servlet中运行时的类路径不同。我已将所有必需的JAR添加到war文件中的web inf/lib文件夹中。还是不行!我必须在war文件的清单文件中设置类路径吗?如果是这样的话,我该怎么做呢?除了在我的JBoss default/lib文件夹中有所有必需的JAR之外,还有其他地方应该引用它们吗?我尝试过将它们添加到war文件的WEB-INF\lib文件夹中,也尝试过将它们添加到C:\Program Files\Java\jdk1.6.0\u 13\jre\lib文件夹中,但仍然出现相同的错误。这太令人沮丧了!我只有在尝试通过servlet访问Jasper类时才会出现错误。我可以成功地访问我自己的类,但是如果我调用一个使用任何Jasper代码的方法,那么我会得到这个classNotFound错误。我已经确定,在Eclipse中运行时的类路径与在servlet中运行时的类路径不同。我已将所有必需的JAR添加到war文件中的web inf/lib文件夹中。还是不行!我必须在war文件的清单文件中设置类路径吗?如果是,我该怎么做?