我有一个用于标签打印的java程序(Argox,Godex打印机10x20cm)。我需要在这些标签中添加更多信息。问题是我没有源代码,所以我使用 Java Decompiler 来获取 .class 文件。
我已将这些 .class 文件添加到新的 java 项目 + .jar 文件附近的文件中。 Rest服务器启动成功,我的java项目从tomcat webapp接收信息,但有一些错误,并且我无法打印我的文件。
有控制台: http://pastebin.com/c09PrWcZ
有java代码出现错误: http://pastebin.com/1WuKthWp (它是 5 个文件之一,但其他文件用于 REST 启动、属性选项等。
我对 java、jersey 和rest 服务都很陌生。
最佳答案
堆栈跟踪中的问题是
net.sf.jasperreports.engine.JRRuntimeException: Error creating SAX parser
让我们猜猜为什么。
- “来自 hell 的练习”问题。
它没有使用正确版本的 xerces 库来编译您的 .jrxml,您的类路径中可能有错误的 xerces 库,您可能有很多...
解决方案:
检查您的 jasper 报告版本的 jasper 报告分发,包括正确的 xerces jar 并删除其他 xerces 实现。
编辑:评论中的用户解决方案:
“我删除了所有 .jar 文件,并从已编译的 .jar 文件附近的 lib 文件夹中复制了所有文件。现在我没有错误了:))”
- 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 模式
<?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 模式,并且您的旧版本 jdt-compiler 将无法识别此格式。
解决方案
手动切换回jrxml文件中的DOCTYPE定义,并从jasper报表标签中删除模式定义(注意设置iReport/Jaspersoft studio使用旧版本(设置、兼容性),因此不会添加不支持的标签/属性)
或者 将 jasper 报告更新到新版本(建议)并检查所有文件是否都有架构定义
关于 java 。 REST 服务 + Jasper 报告。无法打印标签(或找不到),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33918366/