简体   繁体   English

NetBeans:JasperReport异常

[英]NetBeans:JasperReport Exception

I'm working on a project that needs Jasper reporting, I have used the code fragment mentioned below to view the report in NetBeans 6.1 (the report is originally generated and compiled using iReport 3.6.0),my requirement is to print this report using a simple Swing application. 我正在开发一个需要Jasper报告的项目,我使用下面提到的代码片段来查看NetBeans 6.1中的报告(该报告最初是使用iReport 3.6.0生成和编译的),我的要求是使用以下方式打印此报告:一个简单的Swing应用程序。

Code fragment: 代码片段:

    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);
        }
    }
}

But when I run this it gives an exception that I couldn't figure out. 但是,当我运行它时,它给出了一个我无法弄清楚的异常。

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

Thanks. 谢谢。

It means that the groovy library dependency is missing. 这意味着缺少groovy库依赖。

We can add the groovy-1.7.5.jar (it depends on JasperReports version) in classpath to resolve this issue. 我们可以在类路径中添加groovy-1.7.5.jar (它取决于JasperReports版本)来解决这个问题。

We can find the groovy 's dependency in the the JasperReports library pom.xml file. 我们可以在JasperReportspom.xml文件中找到groovy的依赖项。 For the JR 4.5.0 version it is: 对于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>

In case of using maven we can add this dependency to the project: 在使用maven情况下,我们可以将此依赖项添加到项目中:

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

这是因为,在创建报告时,您已选择语言为Grrovy,但这在java程序中使用jrxml。在jrxml文件中,

Try: 尝试:

JasperExportManager.exportReportToHtmlFile(jasperPrint, reportDest);

See JasperExportManager.exportReportToHtmlFile() . 请参阅JasperExportManager.exportReportToHtmlFile() I assume that's the method you mean. 我认为这是你的意思。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM