【问题标题】:Trouble upgrading jasperreports升级 jasperreports 时遇到问题
【发布时间】:2009-10-20 21:30:58
【问题描述】:

我继承了一个应用程序并尝试将 jasperreports v. 0.6.5 升级到 v. 3.5.3 或 v. 3.6.0。这是一个在 Linux 上运行的 Tomcat 5.5.23 容器上提供的 J2EE 应用程序。应用程序 .war 文件是使用 Maven 编译的。

这是我迄今为止尝试过的:

  • 在使用 iReport 的 Windows XP 计算机上重新编译了所有 .jrxml 文件,该计算机使用了以前版本的 jasperreports(1.2.1 到 3.6.0)。

  • 使用 iReport 在另一台从未使用过以前版本的 jasperreports 的 Windows XP 机器上重新编译所有 .jrxml 文件。

  • 在从未使用 iReport 使用过以前版本的 jasperreports 的 Linux 机器上重新编译所有 .jrxml 文件。

  • 清除了 $TOMCAT_HOME/webapp 目录的内容。 经过我的多次尝试,报告将无法在应用程序内部运行,并且在日志文件中产生以下错误:

  • 将测试机器上的 java 版本更新为用于构建应用程序 .war 文件的确切 java 版本。

我还能尝试什么?

这是堆栈:

java.io.InvalidClassException: net.sf.jasperreports.engine.base.JRBaseReport;本地类不兼容:流 classdesc serialVersionUID = 10200,本地类 serialVersionUID = 605 在 java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546) 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) 在 net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:86) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:162) 在 tahc.hris.webapp.action.GenerateReport.execute(GenerateReport.java:127) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 在 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 tahc.hris.webapp.filter.ActionFilter.doFilter(ActionFilter.java:91) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) 在 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) 在 org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) 在 org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) 在 org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) 在 org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) 在 java.lang.Thread.run(Thread.java:595) 嵌套: java.io.InvalidClassException:net.sf.jasperreports.engine.base.JRBaseReport;本地类不兼容:流 classdesc serialVersionUID = 10200,本地类 serialVersionUID = 605 在 java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546) 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) 在 net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:86) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:162) 在 tahc.hris.webapp.action.GenerateReport.execute(GenerateReport.java:127) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 在 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 tahc.hris.webapp.filter.ActionFilter.doFilter(ActionFilter.java:91) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) 在 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) 在 org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) 在 org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) 在 org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) 在 org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) 在 java.lang.Thread.run(Thread.java:595) 嵌套: net.sf.jasperreports.engine.JRException:从文件加载对象时出错:/usr/local/tomcat5/webapps/.../.jasper 在 net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:90) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:162) 在 tahc.hris.webapp.action.GenerateReport.execute(GenerateReport.java:127) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 在 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 tahc.hris.webapp.filter.ActionFilter.doFilter(ActionFilter.java:91) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) 在 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) 在 org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) 在 org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) 在 org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) 在 org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) 在 java.lang.Thread.run(Thread.java:595) 引起:java.io.InvalidClassException:net.sf.jasperreports.engine.base.JRBaseReport;本地类不兼容:流 classdesc serialVersionUID = 10200,本地类 serialVersionUID = 605 在 java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546) 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) 在 net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:86) ... 还有 27 个*

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    萨拉姆,

    我有同样的例外,我首先做的是采取 webapp 的样本 jasperreports 3.7.6 并使其运行。

    有两种方法: 1.1 使用ant命令(*)然后创建jasper-webapp.war并放在..\tomcat.6.0\webapps\文件夹 * http://jasperforge.org/uploads/publish/jasperreportswebsite/trunk/getting.started.html

    1.2 使用 intellij 之类的 IDE 创建一个新项目,然后将所有 webapp 示例文件夹复制到其中。然后将蚂蚁附加到此文件夹中的 build.xml 文件中。之后运行 ant 并编译/运行项目。

    1. 在localhost:[port]中打开浏览器即可看到Web Application Sample 首先转到左侧菜单中的小程序查看器并点击此链接: “单击此处测试您的浏览器是否可以运行 Swing 小程序” 如果您可以运行它并看到小程序矩形,那么您没有问题如果不尝试使用“google chroom”之类的其他浏览器打开上面的这些页面,他可能想从互联网上下载java,只需按照步骤操作即可。

    2. 运行测试后转到此示例的主页并按此顺序跟随页面编译 JRXML ,填写报告,然后单击“applet viewer”中的 Embedded Viewer Applet 链接 页面,看看它是否运行正常。

    3. 尝试理解示例并查看小程序文件夹(在 webapp 示例中)可以看到三个 jar: jasperreports-applet-3.7.6.jar,commons-logging-1.0.4.jar,commons-collections-2.1.1.jar

    打开 viewer.html 并查看示例如何使用此 jar 并调用“EmbeddedViewerApplet.class” throw javascript。

    1. 在servlet 中,将报告数据写入服务器上的pdf 文件,然后从applet 获取applet 上下文对象的句柄并调用showDocument 方法,传递我保存pdf 文件的路径。 取自:http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=1291

    我希望这可以帮助 sombody ... :)

    【讨论】:

      【解决方案2】:

      确保将 Jasper*.jar 文件从 iReport 复制到您的应用程序 Lib 文件夹。您可能正在使用与编译库不同的库运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        • 2020-10-16
        相关资源
        最近更新 更多