为什么我会收到编译错误"org/codehaus/groovy/control/CompilationFailedException"?

63 java ant compilation jasper-reports

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

jasper java.lang.NoClassDefFoundError:
org/codehaus/groovy/control/CompilationFailedException
Run Code Online (Sandbox Code Playgroud)

模板中没有任何复杂的东西,但我仍然无法编译.

tra*_*ega 150

您必须将language模板中的值设置为Java.有两种方法可以做到这一点:

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

  2. 如果您正在编辑JRXML文件中的原始标记,请language="groovy"从文件中删除.

然后尝试重新编译 - 你应该排序.:)


Rij*_*dra 8

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

  • 糟糕的解决方案,因为您只是满足了新的和不必要的依赖性要求.在travega的回答中,你完全删除了依赖性要求,这是更好的方法. (6认同)
  • 这取决于您是否在报告中使用 groovy 表达式....,切换到 java 会使您的 groovy 表达式 as == 失败。(请注意,解决方案是从 jasper 报告分发(lib)相对于类路径中的 groovy 复制库) (2认同)

小智 7

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

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.10</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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


Top*_*era 5

如果您使用 TIBCOJaspersoftStudio:

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