为什么会出现编译错误“ org / codehaus / groovy / control / CompilationFailedException”?


71

我正在尝试使用Ant脚本和Java编译JasperReports模板。我收到此错误:

jasper java.lang.NoClassDefFoundError:
org/codehaus/groovy/control/CompilationFailedException

模板中没有什么复杂的东西,但是我仍然无法编译。

Answers:


164

您必须将language模板中的值设置为Java。有两种方法可以执行此操作:

  1. 如果使用的是iReport,请“报告检查器”中选择根对象(与报告名称相同的根对象)。然后在“属性”窗口中,从“语言”下拉列表中选择“ Java ” 。

  2. 如果要编辑JRXML文件中的原始标记,请language="groovy"从文件中完全删除。

然后尝试重新编译-您应该已排序。:)


1
.jrxml修改后,不要忘记编译.jasper文件!
MatuDuke

8

另一个解决方案是将groovy-all- {version} .jar从groovy二进制发行版复制到应用程序中。


6
糟糕的解决方案,因为您仅满足新的不必要的依赖要求。在travega的答案中,您将完全删除依赖性要求,这是更好的方法。
ADTC 2014年

1
这取决于您是否在报表中使用groovy表达式..,切换到Java将使您的groovy表达式成为==失败。(请注意解决方案是从jasper报告发行版(lib)中复制相对于类路径中groovy的库)
Petter Friberg 2016年

4

如果您使用的是TIBCOJaspersoftStudio:

  1. http://groovy-lang.org/download.html下载最新的groovy 2.4。* jar
  2. 解压并获取此文件./groovy-2.4.10/embeddable/groovy-all-2.4.10.jar
  3. 将罐子放入./TIBCOJaspersoftStudio-6.3.1.final/plugins
  4. 删除旧的jar:./ TIBCOJaspersoftStudio-6.3.1.final/plugins/groovy-all_2.4.5.jar

这些步骤帮助我解决了这个问题。努力解释为什么您的答案会适当吗?
马修·克拉克

4

如果使用的是Maven,则必须在pom.xml中添加groovy依赖项。

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.10</version>
</dependency>

在另一种情况下,必须将库groovy添加到您的lib文件夹(WEB-INF / lib)中


如果您使用Maven,请检查一下不要放<scope>provided</scope>
Sorter

2

在JRXML中将语言更改为java(例如:-language =“ java”),或将groovy * .jar添加到项目的类路径中。


0

您在路径中缺少重要的库常规

情况1:如果您使用的是Maven,请在pom.xml中将此兼容版本与兼容版本一起添加

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>3.0.4</version>
</dependency>

情况2:第二种方法是在类路径中添加groovy jar的兼容版本

下载groovy jar的 网址http : //groovy-lang.org/download.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.