运行java代码以自动生成空白jasper报告时出错

时间:2017-10-11 10:15:37

标签: java jasper-reports classnotfoundexception

我尝试使用Eclipse Neon JAVA EE IDE使用Jaspersoft studio 6.4.0运行一个空白的Jasperreport(Blank A4.Jrxml)。每次运行此代码时,都会被要求添加一个jasper jar依赖文件。所以我将Jasper库和Jasper jar文件下载到我的Java程序(JasperClass.java)中并保存在lib文件夹中。但是我仍然在添加jar文件时遇到错误。我查看了堆栈流程以前的解决方案,但仍然无法解决它。请帮帮我。

Lib文件夹中的JAR库:https://imgur.com/Nj1FOGk

错误:

Oct 11, 2017 1:01:28 PM net.sf.jasperreports.extensions.DefaultExtensionsRegistry loadRegistries
WARNING: Extension resource jar:file:/C:/repo/JasperTest/lib/jasperreports-javaflow-6.4.0.jar!/jasperreports_extension.properties was found to be a duplicate of jar:file:/C:/repo/JasperTest/lib/jasperreports-6.4.0.jar!/jasperreports_extension.properties in classloader sun.misc.Launcher$AppClassLoader@73d16e93
Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException
    at net.sf.jasperreports.engine.JasperExportManager.exportToPdfFile(JasperExportManager.java:150)
    at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:503)
    at JasperPackage.JasperClass.main(JasperClass.java:45)
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.DocumentException
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 3 more

Java Class.Java

import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;

    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JREmptyDataSource;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    public class JasperClass {

       public static void main(String[] args) throws JRException, IOException {

            // Compile jrxml file.
           JasperReport jasperReport = JasperCompileManager
                   .compileReport("C:/repo/JasperTest/Blank_A4.jrxml");

           // Parameters for report
           Map<String, Object> parameters = new HashMap<String, Object>();

           // DataSource
           // This is simple example, no database.
           // then using empty datasource.
           JRDataSource dataSource = new JREmptyDataSource();

           JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
                   parameters, dataSource);


           // Make sure the output directory exists.
           File outDir = new File("C:/repo/JasperTest");
           outDir.mkdirs();

           // Export to PDF.
           JasperExportManager.exportReportToPdfFile(jasperPrint,
                   "C:/repo/JasperTest/Blank.pdf");

           System.out.println("Done!");
       }
    }

空白A4.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.4.0.final using JasperReports Library version 6.4.1  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1b2e21df-4dba-46a0-8e2e-1bed8b81853e">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch"/>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

2 个答案:

答案 0 :(得分:0)

根据堆栈跟踪中的异常,您的存储库lib目录中似乎有一个重复的JAR文件

的JasperReports-javaflow-6.4.0.jar JasperReports的-6.4.0.jar

这两个JAR都是必需的吗?

答案 1 :(得分:0)

感谢您的帮助。我的问题解决了。

  1. 我从lib文件夹中删除了Javaflow6.4.0 jar而不是Jasperreport 6.4.0 jar。 对于例外

    2017年10月11日下午1:01:28 net.sf.jasperreports.extensions.DefaultExtensionsRegistry loadRegistries 警告:扩展资源jar:file:/ C:/repo/JasperTest/lib/jasperreports-javaflow-6.4.0.jar!/ jasperreports_extension.properties被发现是jar的重复:file:/ C:/ repo / JasperTest类浏览器中的/lib/jasperreports-6.4.0.jar!/jasperreports_extension.properties sun.misc.Launcher$AppClassLoader@73d16e93 线程“main”中的异常java.lang.NoClassDefFoundError:com / lowagie / text / DocumentExceptio

  2. 后来我得到了一个例外情况,如下所示。然后我将Itext 2.1.7 jar和itext pdf 5.5.0 jar一起添加到lib文件中。这很有效。 Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException at net.sf.jasperreports.engine.JasperExportManager.exportToPdfF‌​ile(JasperExportMana‌​ger.java:150)

  3. 再次感谢你。

相关问题