【问题标题】:DynamicJasper: How to fix java.lang.NoSuchMethodError error [closed]DynamicJasper:如何修复 java.lang.NoSuchMethodError 错误 [关闭]
【发布时间】:2012-02-17 05:00:24
【问题描述】:

我有一个动态碧玉报告的例子。

我正在使用 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)

【问题讨论】:

  • 版本 3.2.1 最高支持 jasper 报告 4.0
  • 它取决于 pom.xml,我认为 DJ 3.2.1 不支持 jasper-report4.0

标签: jasper-reports dynamic-jasper


【解决方案1】:

如果您使用的是 DynamicJasper 3.2.1,您应该使用来自 DJ 的 pom.xml 的外部库。

pom.xml文件的sn-p:

<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 等。

【讨论】:

  • 它只是一个 xml 文件或特殊类型的文件...??如何添加这个文件...??
  • 您听说过Maven吗?您应该使用正确版本的库(在模块依赖项中)。
  • 我对 Maven 一无所知...??跟DJ有关系吗??我正在使用最新的库,请检查我的问题的开头...如果不是最新的,请告诉我...
  • 您不应使用最新版本的库。您应该使用与发布的 pom.xml 文件中相同的版本。例如,您应该使用jasperreport-3.7.1.jar。您可以阅读有关Apache Maven 的信息 - 有很多书籍和文章。
  • 知道了……我会努力的……如果有需要请告诉你……非常感谢……
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 2019-04-07
  • 2012-03-24
  • 2020-05-17
  • 1970-01-01
相关资源
最近更新 更多