【问题标题】:cvc-complex-type.3.2.2 attribute 'uuid' is not allowed to appear in element 'jasperreport'cvc-complex-type.3.2.2 属性“uuid”不允许出现在元素“jasperreport”中
【发布时间】:2012-07-13 09:38:13
【问题描述】:

已下载适用于 Linux 的 iReport-4.6.0,当通过 File->New... 菜单创建新报告时,预览中不会显示新报告,而是显示错误消息 cvc-complex-type.3.2.2 attribute 'uuid' is not allowed to appear in element 'jasperreport'

即使在选项中选择兼容性 4.5.0 也会出现相同的错误消息。 打开由 iReport-4.6.0 (Windows) 的其他用户生成的报告文件时也会出现相同的错误消息。

报告文件的架构为http://jasperreports.sourceforge.net/xsd/jasperreport.xsd,但此架构文件未提及任何uuid

可能是什么问题?

【问题讨论】:

  • 奇数。在选项中选择兼容性 4.5.0 为我修复了它。当然,我确实必须对报告进行更改并重新保存它,然后才能发现它。
  • 我发现多个类路径条目是罪魁祸首,更具体地说是 jasperreports-core-renderer.jar 和 jasperreports-extensions.jar 的旧版本以及最新版本。这种情况发生在从以前版本的 iReport 升级到更新版本时。每次升级都会保留旧版本并添加新版本。

标签: jasper-reports ireport


【解决方案1】:

在 iReport Designer 中,您可以在选项窗口中将兼容模式更改为您喜欢的版本。 对我来说,如果我将兼容性设置为 jasperreport 3.5.1,当我再次保存报告时,uuid 将全部删除。

问候

【讨论】:

  • 我不确定为什么这个答案被降级 - 它为我解决了这个问题。我选择了 4.5 版而不是 3.5.1 版,因为进一步的研究表明 UUID 是在 4.6 版中引入的。但是这个答案仍然有效,并且肯定比每次进行更改时手动编辑文件以删除 UUID 更好。
  • 为了让答案更清楚,我们可以更改版本@工具-选项-常规-兼容性-最新版本
【解决方案2】:

我找到了答案:

我用记事本++打开了JRXML文件,对uuid="\w*-\w*-\w*-\w*-\w*"进行了“搜索和替换”,并选择了正则表达式,使用空字符串,然后所有出现的这个错误标签都被删除了。

为我工作。

【讨论】:

  • 谢谢。这是否意味着 .jrxml 文件中错误地存在 uuid 标记?也就是说,iReport(或jasperreports)添加了一个根据自己的schema定义无效的uuid标签?
  • 我认为是真的.. 因为如果你搜索它,JASPERREPORT 网站上有一个关于这个标签的 ISSUE,这里,jasperforge.org/projects/ireport/tracker/view.php?id=5784.. 抱歉回复晚了...
  • 以下 Marthym 的回答比这要容易得多 - 即使进行了更改,它也会继续工作。虽然这个答案确实有效,但您每次在 iReport Designer 中进行任何更改时都必须重复它。有了 Marthym 的回答,您只需设置它并忘记它。
  • 这不是一个好的解决方案,因为如果您修改报告,所有 uuid 都会再次返回。
【解决方案3】:

在 notpad++ 中打开报告,只删除 uuid 和它的数字。在你正确编译并生成报告之后……我有同样的问题,我通过这种方式解决了……

【讨论】:

    【解决方案4】:

    我不使用Linux。但是您使用iReport Designer-xx 创建报表。您在项目中添加相同版本的 jasperreport(jasperreport-XX) jar。

    【讨论】:

      【解决方案5】:

      我刚刚建议我的同事也遇到了这个问题:

      sed -i 's/ uuid="[^"]*"//g' $(find * -name \*.jrxml)
      

      我通常不使用sed(1)-i,但她使用的是 GNU/Linux,所以这里没有问题。比较专业的Unix解决方法是:

      find * -name \*.jrxml -print0 | while IFS= read -d '' -r file; do
          ed -s "$file" <<-'EOF'
              1,$g/ uuid="[^"]*"/s///g
              w
              q
          EOF
      done
      

      (这四个空格是制表符,否则不起作用,你需要mksh(1)或另一个可以读取NUL分隔输入的shell。)

      你也可以使用 Perl:

      find * -name \*.jrxml -print0 | xargs -0 perl -pi -e 's/ uuid="[^"]*"//g'
      

      或者类似的东西,无论如何,取决于你的需要,你的xargs(1)等;-)

      【讨论】:

      • 谢谢。我在 JasperReports 服务器上发布我的报告,并将整个存储库的导出提交到版本控制系统(SVN、CVS、...)。为了避免同一文件的不同版本之间出现任何无用的差异,我开发了一个脚本来从导出的文件中删除无用的属性和其他一些东西。我将这行代码添加到我的脚本中(它不包括二进制文件): find "$1" -name ".data" -print | xargs 文件 | grep 文本 |切-d:-f1 | xargs sed -i 's/uuid="[^"]"//g'
      • @FedericoCattozzi 不客气,很高兴能为您提供帮助。请注意,find/xargs/grep 在使用时会出现文件名中特殊字符和冒号的问题,并且file 的输出不能保证稳定,sed -i 是不可移植的 GNUism。但是,如果它适用于您的系统,则不用担心。 (不过,请随意投票;)
      【解决方案6】:

      如果您使用的是 ireport 4.6 或更高版本,解决 uuid 问题的最佳方法是使用类似的 ireport 4.6 或更高版本,因为 uuid 属性是从 4.​​6 版新引入的。 否则如果手动从jrxml文件中删除uuid,下次编译时uuid会再次放入对应的标签中……

      【讨论】:

        【解决方案7】:

        这个问题发生在我的案例中,因为重复的类路径条目,更具体地说是来自旧版本 jasperreports-core-renderer.jar 和 jasperreports-extensions.jar 的条目(在选项 -> 类路径中)。

        这些重复的条目是在 iReport 升级期间导入设置后出现的。显然这是由于 iReport 中的一个错误导致旧版本没有从类路径中删除。

        因此要么避免从以前的版本导入设置,要么手动删除过时的 .jar。

        【讨论】:

          【解决方案8】:

          我有一个很好的简单解决方案。

          我正在使用 Jasper Studio 5.5 支持有关 Jasper Server 4.5 的报告

          1. 在 Jasper Studio 中,删除服务器引用(如果有)。
          2. 重新创建连接。创建服务器连接时,转到“高级设置 > Jasper 服务器库版本”并从列表中选择您的服务器版本。
          3. 打开您的报告,检查 uuid 标记是否已删除,部署

          【讨论】:

            【解决方案9】:

            就我而言,我刚刚删除了uuid="63f04b11-4b7e-4cf1-99b5-a5ec6db799d6" 我生成了一个样本报告来测试它是否完美运行

            所以你可以尝试删除uuid=" "

            【讨论】:

              【解决方案10】:

              您始终可以将 Compability 设置为旧版本,它对我有用。

              工具 > 选项 > iReport > 常规 > 兼容性

              在此之后转到 xaml 并更改任何内容并再次保存,然后运行报告以删除所有 uuid 。

              【讨论】:

                【解决方案11】:

                严格来说,此修复仅适用于 Jaspersoft Studio,但此问题是搜索 attribute 'uuid' is not allowed 错误时的第一个结果。

                对于 Jasper Server 版本

                1. 在 Project Explorer 中右键单击 jrxml 文件 -> 属性 -> Jaspersoft Studio -> 兼容性 -> Source .jrxml 版本 -> JasperReports 4.5.0
                2. 在 Repository Explorer 中右键单击服务器 -> 编辑 JasperReports 服务器连接 -> 高级设置 -> JasperReports 库版本 -> JasperReports 4.5.0

                如果您使用 Jaspersoft Studio 发布到服务器,第二步很重要。

                【讨论】:

                  猜你喜欢
                  • 2014-11-27
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-05-05
                  • 2016-09-30
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-12-28
                  • 2023-03-09
                  相关资源
                  最近更新 更多