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

Java. REST service + Jasper reports. Cannot print label (or cannot find)

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

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

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

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

我真的是 java 球衣和休息服务的新手。

你的堆栈跟踪中的问题是

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

让我们猜猜为什么。

  1. "Xerces from hell"问题.

它没有使用正确版本的 xerces 库来编译你的 .jrxml,你可能在类路径中有错误的 xerces 库,你可能有很多...

解法:

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

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

"i deleted all my .jar files and copied all from lib folder near compiled .jar file. now i have no errors :))"

  1. jdt-compiler 和 .jrxml 格式的不同版本

最初 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-schema

<?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 它将 header 从 DTD 更改为 XML-schema 并且您的旧版本 jdt-compiler 将无法识别此格式。

解决方案

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

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