我正在开发一个需要Jasper报告的项目,我使用下面提到的代码片段来查看NetBeans 6.1中的报告(该报告最初是使用iReport 3.6.0生成和编译的),我的要求是打印此报告使用简单的Swing应用程序。
代码片段:
public class JasperCheck {
public static void main(String[] args) {
String reportSource = "E:/Projects/report.jrxml";
String reportDest = "E:/Projects/report.html";
Map<String, Object> params = new HashMap<String, Object>();
try {
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint =
JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
JasperExportManager.exportReportToHtmlFile(jasperPrint, reportDest);
JasperViewer.viewReport(jasperPrint);
} catch (JRException ex) {
System.out.println(ex);
}
}
}
但是当我运行它时,它给出了一个我无法弄清楚的异常。
Exception:
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:157)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115)
at net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:511)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:215)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:148)
at src.JasperCheck.main(JasperCheck.java:31)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedException
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 8 more
Java Result: 1
感谢。
答案 0 :(得分:10)
这意味着缺少groovy
库依赖项。
我们可以在类路径中添加groovy-1.7.5.jar
(它取决于JasperReports
版本)来解决此问题。
我们可以在groovy
库JasperReports
文件中找到 pom.xml
的依赖关系。对于JR 4.5.0版本,它是:
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.7.5</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
如果使用 maven
,我们可以将此依赖项添加到项目中:
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.7.5</version>
</dependency>
答案 1 :(得分:3)
这是因为,在创建报告时,您已选择语言为Grrovy,但在java程序中使用jrxml。在jrxml文件中,
答案 2 :(得分:0)
尝试:
JasperExportManager.exportReportToHtmlFile(jasperPrint, reportDest);
见JasperExportManager.exportReportToHtmlFile()
。我认为这就是你的意思。