Java的。 REST服务+ Jasper报告。无法打印标签(或找不到)

时间:2015-11-25 13:56:49

标签: java rest jersey jasper-reports saxparser

我有一个用于标签打印的java程序(Argox,Godex打印机10x20cm)。我需要在theese标签中添加更多信息。问题是我没有源代码所以我使用Java Decompiler获取.class文件。

我已将这些.class文件添加到.jar文件附近的新java项目+文件中。 Rest服务器成功启动,我的java项目从tomcat webapp接收信息,但是有一些错误,我无法打印我的文件。

有控制台: http://pastebin.com/c09PrWcZ

有java代码出现错误: http://pastebin.com/1WuKthWp(它是5个文件中的一个,但其他用于REST启动,属性选项等。

我真的很喜欢java,jersey和rest service。

1 个答案:

答案 0 :(得分:0)

堆栈跟踪中的问题是

net.sf.jasperreports.engine.JRRuntimeException: Error creating SAX parser

让我们猜猜为什么。

  1. “来自地狱的Xerces”问题。
  2. 它没有使用正确版本的xerces库来编译.jrxml,你可能在classpath中有错误的xerces库,你可能有很多......

    <强>解决方案:

    检查您的jasper报告版本的jasper报告分布,包含正确的xerces jar并删除其他xerces实现。

    编辑:评论中的用户解决方案:

    “我删除了所有.jar文件并从编译后的.jar文件附近的lib文件夹中复制了所有文件。现在我没有错误:))”

    1. jdt-compiler的不同版本和.jrxml格式
    2. 一开始,jasper报告使用的是DTD(如果检查.jrxml文件的xml),你会发现:

       <?xml version="1.0" encoding="UTF-8"?>
       <!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
      

      然后他们切换到XML架构

      <?xml version="1.0" encoding="UTF-8"?>
      <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Entrata" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" isFloatColumnFooter="true">
      

      因此,如果您打开旧报告(DTD)并使用es编辑。 iReport / Jaspersoft Studio它会将标题从DTD更改为XML模式,而旧版本的jdt-compiler将无法识别此格式。

      <强>解决方案

      在jrxml文件中手动切换回DOCTYPE定义,并从jasper报告标记中删除模式定义(注意设置iReport / Jaspersoft studio以使用旧版本(设置,兼容性),因此它不会添加不是的标记/属性支持)

      或 将jasper报告更新为新版本(建议)并检查所有文件是否具有模式定义