DynamicJasper:如何修复java.lang.NoSuchMethodError错误

时间:2012-02-17 05:00:25

标签: jasper-reports dynamic-jasper

我有动态jasper报告的示例。

我正在使用NetBeans IDE。

我包含库文件如下:

Dynamic-jasper-3.2.1.jar
Dynamic-jasper-3.2.1-test.jar
jasperreport-4.5.jar
commons-beanutils-1.8.2.jar 
commons-collections-3.2.1.jar 
commons-digester-1.7.jar 
commons-logging-1.1.jar 
junit-3.8.2.jar
import java.util.Date;
import net.sf.jasperreports.view.JasperDesignViewer;
import net.sf.jasperreports.view.JasperViewer;
import ar.com.fdvs.dj.domain.DynamicReport;
import ar.com.fdvs.dj.domain.builders.FastReportBuilder;
import ar.com.fdvs.dj.test.BaseDjReportTest;

public class FastReportTest extends BaseDjReportTest {
    public DynamicReport buildReport() throws Exception {

        FastReportBuilder drb = new FastReportBuilder();
        drb.addColumn("State", "state", String.class.getName(), 30)
                .addColumn("Branch", "branch", String.class.getName(), 30)
                .addColumn("Product Line", "productLine", String.class.getName(), 50)
                .addColumn("Item", "item", String.class.getName(), 50)
                .addColumn("Item Code", "id", Long.class.getName(), 30, true)
                .addColumn("Quantity", "quantity", Long.class.getName(), 60, true)
                .addColumn("Amount", "amount", Float.class.getName(), 70, true)
                .addGroups(2)
                .setTitle("November \"2006\" sales report")
                .setSubtitle("This report was generated at " + new Date())
                .setPrintBackgroundOnOddRows(true)
                .setUseFullPageWidth(true);

        DynamicReport dr = drb.build();
        return dr;
    }

    public static void main(String a[]) throws Exception {
        FastReportTest test = new FastReportTest();
        // test.
        test.testReport();
        test.exportToJRXML();
        JasperViewer.viewReport(test.jp);    //finally display the report report
        JasperDesignViewer.viewReportDesign(test.jr);
    }
}

我有这样的错误:

Feb 17, 2012 10:30:58 AM ar.com.fdvs.dj.core.DynamicJasperHelper generateJasperReport
INFO: generating JasperReport
Feb 17, 2012 10:30:58 AM ar.com.fdvs.dj.core.DynamicJasperHelper generateJasperReport
INFO: generating JasperReport
Feb 17, 2012 10:30:58 AM ar.com.fdvs.dj.core.DJJRDesignHelper getNewDesign
INFO: obtaining DynamicJasperDesign instance
Exception in thread "main" java.lang.NoSuchMethodError: ar.com.fdvs.dj.domain.DynamicJasperDesign.setPrintOrder(B)V
    at ar.com.fdvs.dj.core.DJJRDesignHelper.getNewDesign(DJJRDesignHelper.java:69)
    at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperDesign(DynamicJasperHelper.java:207)
    at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:535)
    at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:518)
    at ar.com.fdvs.dj.test.BaseDjReportTest.testReport(BaseDjReportTest.java:83)
    at FastReportTest.main(FastReportTest.java:34)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

1 个答案:

答案 0 :(得分:3)

如果您使用DynamicJasper 3.2.1,则应使用DJ的pom.xml中的外部库。

pom.xml文件的片段:

<dependencies>
    <dependency>
        <groupId>jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>3.7.1</version>
        <exclusions>
            <exclusion>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
            </exclusion>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
            <exclusion>
                <groupId>bouncycastle</groupId>
                <artifactId>bcmail-jdk14</artifactId>
            </exclusion>
            <exclusion>
                <groupId>bouncycastle</groupId>
                <artifactId>bcprov-jdk14</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.1</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.7.0</version>
    </dependency>
    <dependency>
        <groupId>opensymphony</groupId>
        <artifactId>xwork</artifactId>
        <version>1.2.1</version>
        <scope>provided</scope>
       <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>opensymphony</groupId>
        <artifactId>webwork</artifactId>
        <version>2.2.4</version>
        <scope>provided</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.3</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>net.sourceforge</groupId>
        <artifactId>barbecue</artifactId>
        <version>1.1</version>
        <optional>true</optional>
    </dependency>
</dependencies>

正如您所见,DJ API的此版本(3.2.1)正在使用jasperreports 3.7.1等。