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

标签 java rest jersey jasper-reports saxparser

我有一个用于标签打印的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

让我们猜猜为什么。

  1. “来自 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/

    相关文章:

    java - 使用entityManager将多条记录插入到包含@GenerateValue的表中

    java - Android 与数学解析器

    api - 通过 PayPal REST API 进行银行支付

    java - 使用Java调用Docker Remote API

    rest - Tomcat,JAX-RS, Jersey ,@PathParam : how to pass dots and slashes?

    java - 对数组进行排序以形成稍微平衡的二叉搜索树

    java - 关于不同jar中存在两个同名类?

    rest - 是否无法使用 curl、使用 Google Cloud Speech API 来识别 10 到 15 分钟内的文件?

    java - 是否可以从 RestEASY MessageBodyReaderInterceptor 中的 MessageBodyReaderContext 获取 @PathParam 或 @QueryParam?

    java - Jersey:mysql java.lang.ClassNotFoundException:com.mysql.jdbc.Driver 虽然包含在内