java.lang.ClassNotFoundException: org.apache.commons.digester.Rule
java.lang.ClassNotFoundException: org.apache.commons.digester.Rule
这不是一个新问题,但我 help/clue 少了...所以在这里问...我在尝试 运行 DynamicReport 时遇到错误 "java.lang.ClassNotFoundException: org.apache.commons.digester.Rule"示例项目。我的规格如下:
Java - 1.7,commons-beanutils-1.9.3,commons-collections-3.2.2,commons-digester-3.2,commons-lang-3.7,commons-logging-1.2,dynamicreports-core-5.0.0, jasperreports-5.6,jasperreports-javaflow,
代码片段如下:
// import statements
public class sampleReport {
public sampleReport() {
build();
}
private void build() {
try {
JasperReportBuilder report = DynamicReports.report();
// a new report
report // create new report design
.columns(
// add columns title, field name data type
Columns.column("Item", "item",
DataTypes.stringType()),
Columns.column("Quantity", "quantity",
DataTypes.integerType()),
Columns.column("Unit price",
"unitprice",
DataTypes.bigDecimalType()))
.title(Components.text("Getting started report")
.setHorizontalAlignment(HorizontalAlignment.CENTER))
// shows report title
.pageFooter(Components.pageXofY())
// shows number of page at page footer
.setDataSource(createDataSource())
// set datasource
.show(); // create and show report
// show the report
report.show();
// export the report to a pdf file
report.toPdf(new FileOutputStream("c:/report.pdf"));
} catch (DRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private JRDataSource createDataSource() {
DRDataSource dataSource = new DRDataSource("item",
"quantity", "unitprice");
dataSource.add("Notebook", 1, new BigDecimal(500));
dataSource.add("DVD", 5, new BigDecimal(30));
dataSource.add("DVD", 1, new BigDecimal(28));
dataSource.add("DVD", 5, new BigDecimal(32));
dataSource.add("Book", 3, new BigDecimal(11));
dataSource.add("Book", 1, new BigDecimal(15));
dataSource.add("Book", 5, new BigDecimal(10));
dataSource.add("Book", 8, new BigDecimal(9));
return dataSource;
}
public static void main(String[] args) {
new sampleReport();
}
感谢任何帮助。
我不知道您的 IDE 配置和/或构建配置。然而,错误将我指向 jar 版本不兼容问题 的方向。
基本上发生的事情是你的一个罐子引用了一个 class 由于版本不同(旧的或更新的)
而没有包含在当前构建路径中
建议的解决方案: 如果您有能力使用更高级的构建工具,如 maven or gradle,它会自动解决依赖关系并指出问题版本。使用它们的最佳方法是一个一个地添加 Maven 工件(从最复杂依赖的 jar 开始)直到所有导入错误都被删除。这可能会解决所有版本问题。
替代(快速)解决方案: 下载 this version of apache.digester because if you look at the maven dependencies of jasper 你可以看到它引用了 digester 的 2.1 版,而你使用的可能是 digester 的 3.2 版class在不同的包下。
希望对您有所帮助。
这不是一个新问题,但我 help/clue 少了...所以在这里问...我在尝试 运行 DynamicReport 时遇到错误 "java.lang.ClassNotFoundException: org.apache.commons.digester.Rule"示例项目。我的规格如下: Java - 1.7,commons-beanutils-1.9.3,commons-collections-3.2.2,commons-digester-3.2,commons-lang-3.7,commons-logging-1.2,dynamicreports-core-5.0.0, jasperreports-5.6,jasperreports-javaflow,
代码片段如下:
// import statements
public class sampleReport {
public sampleReport() {
build();
}
private void build() {
try {
JasperReportBuilder report = DynamicReports.report();
// a new report
report // create new report design
.columns(
// add columns title, field name data type
Columns.column("Item", "item",
DataTypes.stringType()),
Columns.column("Quantity", "quantity",
DataTypes.integerType()),
Columns.column("Unit price",
"unitprice",
DataTypes.bigDecimalType()))
.title(Components.text("Getting started report")
.setHorizontalAlignment(HorizontalAlignment.CENTER))
// shows report title
.pageFooter(Components.pageXofY())
// shows number of page at page footer
.setDataSource(createDataSource())
// set datasource
.show(); // create and show report
// show the report
report.show();
// export the report to a pdf file
report.toPdf(new FileOutputStream("c:/report.pdf"));
} catch (DRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private JRDataSource createDataSource() {
DRDataSource dataSource = new DRDataSource("item",
"quantity", "unitprice");
dataSource.add("Notebook", 1, new BigDecimal(500));
dataSource.add("DVD", 5, new BigDecimal(30));
dataSource.add("DVD", 1, new BigDecimal(28));
dataSource.add("DVD", 5, new BigDecimal(32));
dataSource.add("Book", 3, new BigDecimal(11));
dataSource.add("Book", 1, new BigDecimal(15));
dataSource.add("Book", 5, new BigDecimal(10));
dataSource.add("Book", 8, new BigDecimal(9));
return dataSource;
}
public static void main(String[] args) {
new sampleReport();
}
感谢任何帮助。
我不知道您的 IDE 配置和/或构建配置。然而,错误将我指向 jar 版本不兼容问题 的方向。 基本上发生的事情是你的一个罐子引用了一个 class 由于版本不同(旧的或更新的)
而没有包含在当前构建路径中建议的解决方案: 如果您有能力使用更高级的构建工具,如 maven or gradle,它会自动解决依赖关系并指出问题版本。使用它们的最佳方法是一个一个地添加 Maven 工件(从最复杂依赖的 jar 开始)直到所有导入错误都被删除。这可能会解决所有版本问题。
替代(快速)解决方案: 下载 this version of apache.digester because if you look at the maven dependencies of jasper 你可以看到它引用了 digester 的 2.1 版,而你使用的可能是 digester 的 3.2 版class在不同的包下。
希望对您有所帮助。