无法获得Jasper报告与jsp / servlet一起使用 [英] Cannot get Jasper report to work with jsp/servlet

查看:89
本文介绍了无法获得Jasper报告与jsp / servlet一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直试图让Jasper报告连续数周工作。它在Eclipse中运行良好,来自Jasper网站的演示工作。它只是不能在JBoss的jsp页面上工作。

I've been trying to get Jasper reports to work now for weeks. It works fine in Eclipse, the demo from the Jasper website works. It just won't work from my jsp page in JBoss.

我的jsp页面非常基本。它调用类中的方法。它肯定达到了这一点,因为我有输出诊断。当我调用任何Jasper方法时,它会突然出现这个错误:

My jsp page is pretty basic. It calls a method in a class. It definitely gets to that point because I have output diagnostics. When I call any Jasper method it bombs out with this error:

java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory

我在任何地方都倾倒了jar文件。我甚至在我的 jre / lib / ext 文件夹中抛弃了这组罐子。

I've dumped jar files everywhere. I've even gone as far as dumping this set of jars in my jre/lib/ext folder.


  • batik-1.5

  • commons-beanutils-1.8.0

  • commons-collections-3.2.1

  • commons-digester-1.7

  • commons-javaflow-20060411

  • commons-logging-1.1.1

  • iText-2.1.7

  • jasperreports-4.6.0

  • jasperreports-applet-4.6.0

  • jasperreports-fonts-4.6.0

  • jasperreports-javaflow-4.6.0

  • log4j

  • org.eclipse.jdt.core_3.7.1.v_B76_R37x

  • poi-3.6

  • batik-1.5
  • commons-beanutils-1.8.0
  • commons-collections-3.2.1
  • commons-digester-1.7
  • commons-javaflow-20060411
  • commons-logging-1.1.1
  • iText-2.1.7
  • jasperreports-4.6.0
  • jasperreports-applet-4.6.0
  • jasperreports-fonts-4.6.0
  • jasperreports-javaflow-4.6.0
  • log4j
  • org.eclipse.jdt.core_3.7.1.v_B76_R37x
  • poi-3.6

但没有任何区别。

感谢您的回复和建议。
我在jre / lib / ext文件夹中使用转储jar,因为我在JBoss default / lib中尝试过它们并且它不起作用。
但是,我现在已经删除了除Jboss default / lib之外的所有引用,但它仍然不起作用。

Thanks for your replies and suggestions. I resorted to dumping jars in the jre/lib/ext folder because I had tried it with them in JBoss default/lib and it wouldn't work. However, I have now removed all references apart from the Jboss default/lib, but it still doesn't work.

当我第一次启动JBoss并运行时我的jsp页面我得到这个堆栈跟踪:

When I first start JBoss and run my jsp page I get this stacktrace:

2012-06-19 08:03:49,349 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/Kanban].[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.<clinit>(JRXmlDigesterFactory.java:179)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207)
at my.test.TestClass.compileReport(TestClass.java:73)
at my.test.TestClass.show(TestClass.java:35)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:85)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)

这似乎表明错误是org / apache / commons / logging / LogFactory,但我肯定有公共记录 - 1.1.1.jar在JBoss default / lib。

That seems to suggest the error is with org/apache/commons/logging/LogFactory but I definitely have commons-logging-1.1.1.jar in JBoss default/lib.

如果我再次运行jsp页面,我会得到一个不同的错误:

If I then run the jsp page a second time I get a different error:

2012-06-19 08:04:23,080 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/Kanban].[jsp]] Servlet.service() for servlet jsp 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 my.test.TestClass.compileReport(TestClass.java:73)
at my.test.TestClass.show(TestClass.java:35)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:85)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)

我可以提供任何可能有助于某人诊断我的问题的其他信息。有谁知道我在这里做错了什么?

I can provide any additional information that might help someone diagnose my problem. Does anyone know what I'm doing wrong here?

推荐答案

你很困惑 ClassNotFoundException with NoClassDefFoundError 。你的类路径已经很好了。请不要污染JRE库。你绝对应该撤消。只需将JAR放在 / WEB-INF / lib 中就足够了。不要忘记撤消在Eclipse项目的构建路径设置中所做的任何更改。

You're confusing ClassNotFoundException with NoClassDefFoundError. Your classpath was already fine. Please do not pollute the JRE library. You should absolutely undo that. Just placing the JARs in /WEB-INF/lib was been sufficient. Don't forget to undo any changes made in Eclipse project's "Build Path" settings as well.

此特定 NoClassDefFoundError 基本上意味着所提到的类中的一个 static 变量或块在初始化期间引发了异常,这反过来导致类加载器无法加载该类。应该在堆栈跟踪中进一步显示该异常的真正根本原因。由于您没有发布整个堆栈跟踪,因此无法解释您为何无法初始化以及如何解决它。

This particular NoClassDefFoundError basically means that one of the static variables or blocks of the mentioned class threw an exception during initialization which in turn caused that the classloader couldn't load the class. The real root cause of that exception should be visible further down in the stacktrace. Since you didn't post the entire stacktrace, it isn't possible to explain you why exactly it failed to initialize and how to solve it.

因此,请阅读堆栈跟踪中最底层的根本原因,解释异常/消息并相应地修复它。

So, read the bottommost root cause in the stacktrace, interpret the exception/message and fix it accordingly.

这篇关于无法获得Jasper报告与jsp / servlet一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆