我尝试使用 JasperReports 和 DynamicJasper API 创建图表,查看Bar3DChartBuilderTest网站。
但我的代码抛出异常:
java.lang.ClassNotFoundException: Integer.class.getName()
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
ar.com.fdvs.dj.core.layout.AbstractLayoutManager.registerChartVariable(AbstractLayoutManager.java:1181)
ar.com.fdvs.dj.core.layout.AbstractLayoutManager.createChart(AbstractLayoutManager.java:1143)
ar.com.fdvs.dj.core.layout.AbstractLayoutManager.layoutCharts(AbstractLayoutManager.java:917)
ar.com.fdvs.dj.core.layout.AbstractLayoutManager.endLayout(AbstractLayoutManager.java:159)
ar.com.fdvs.dj.core.layout.ClassicLayoutManager.endLayout(ClassicLayoutManager.java:160)
ar.com.fdvs.dj.core.layout.AbstractLayoutManager.applyLayout(AbstractLayoutManager.java:106)
ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:555)
ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:533)
com.ay.ireport.DynamicJasperTemplate.buildReport(DynamicJasperTemplate.java:62)
org.apache.jsp.checkboxes_jsp._jspService(checkboxes_jsp.java:124)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
请帮我解决这个问题。
我尝试从用户选择动态创建图表。
public void buildReport(String a[]) throws Exception{
int i=0;
List<Object> dt=getDataType(a,tname);
for(int k= 0;k<dt.size();k++)
System.out.println(dt.get(k));
String query = createQuery(a,this.tname);
//Create report layout
DynamicReport dr = buildReportLayout(a,dt);
JRDataSource ds = getDataSource(a, query);
//Exception line
JasperReport jr = DynamicJasperHelper.generateJasperReport(dr, new ClassicLayoutManager(), null);
JasperPrint jp = JasperFillManager.fillReport(jr, null, ds);
//JasperDesignViewer.viewReportDesign(DynamicJasperHelper.generateJasperReport(dr, new ClassicLayoutManager(),null));
JasperExportManager.exportReportToPdfFile(jp,"C:/report-out.pdf");
}
private DynamicReport buildReportLayout(String[] a,List dtt) {
DynamicReportBuilder drb = new DynamicReportBuilder ();
Font font = new Font(10,"Serif",true);
Style headerStyle = new Style();
headerStyle.setFont(font);
headerStyle.setHorizontalAlign(HorizontalAlign.LEFT);
headerStyle.setVerticalAlign(VerticalAlign.MIDDLE);
font = new Font(8,"Serif",false);
Style detailStyle = new Style();
detailStyle.setFont(font);
detailStyle.setHorizontalAlign(HorizontalAlign.LEFT);
detailStyle.setVerticalAlign(VerticalAlign.MIDDLE);
Object obj="NUMBER";
Object obj1="VARCHAR2";
String type = null;
for(i=0; i<a.length; i++) {
if(dtt.get(i).equals(obj)){
type="Integer.class.getName()";
}
else if(dtt.get(i).equals(obj1)){
type="String.class.getName()";
}
AbstractColumn col = ColumnBuilder.getNew()
.setColumnProperty(a[i],type)
.setTitle(a[i]).setWidth(200)
.setStyle(detailStyle)
.setHeaderStyle(headerStyle)
.build();
drb.addColumn(col);
}
drb.setUseFullPageWidth(true);
DJAxisFormat categoryAxisFormat = new DJAxisFormat("category");
categoryAxisFormat.setLabelFont(Font.ARIAL_SMALL);
categoryAxisFormat.setLabelColor(Color.DARK_GRAY);
categoryAxisFormat.setTickLabelFont(Font.ARIAL_SMALL);
categoryAxisFormat.setTickLabelColor(Color.DARK_GRAY);
categoryAxisFormat.setTickLabelMask("");
categoryAxisFormat.setLineColor(Color.DARK_GRAY);
DJAxisFormat valueAxisFormat = new DJAxisFormat("value");
valueAxisFormat.setLabelFont(Font.ARIAL_SMALL);
valueAxisFormat.setLabelColor(Color.DARK_GRAY);
valueAxisFormat.setTickLabelFont(Font.ARIAL_SMALL);
valueAxisFormat.setTickLabelColor(Color.DARK_GRAY);
valueAxisFormat.setTickLabelMask("#,##0.0");
valueAxisFormat.setLineColor(Color.DARK_GRAY);
DJChart djChart = new DJBar3DChartBuilder()
//chart
.setX(20)
.setY(10)
.setWidth(500)
.setHeight(250)
.setCentered(false)
.setBackColor(Color.LIGHT_GRAY)
.setShowLegend(true)
.setPosition(DJChartOptions.POSITION_FOOTER)
.setTitle("Bosum")
.setTitleColor(Color.DARK_GRAY)
.setTitleFont(Font.ARIAL_BIG_BOLD)
.setSubtitle("subtitle")
.setSubtitleColor(Color.DARK_GRAY)
.setSubtitleFont(Font.COURIER_NEW_BIG_BOLD)
.setLegendColor(Color.DARK_GRAY)
.setLegendFont(Font.COURIER_NEW_MEDIUM_BOLD)
.setLegendBackgroundColor(Color.WHITE)
.setLegendPosition(DJChartOptions.EDGE_BOTTOM)
.setTitlePosition(DJChartOptions.EDGE_TOP)
.setLineStyle(DJChartOptions.LINE_STYLE_DOTTED)
.setLineWidth(1)
.setLineColor(Color.DARK_GRAY)
.setPadding(5)
//dataset
.setOrientation(PlotOrientation.VERTICAL)
.setCategory((PropertyColumn)drb.getColumn(2))
.addSerie(drb.getColumn(0))
//plot
.setXOffset(10)
.setyOffset(10)
.setShowLabels(false)
.setCategoryAxisFormat(categoryAxisFormat)
.setValueAxisFormat(valueAxisFormat)
.build();
drb.addChart(djChart);
System.out.println("vvvvvvvvvvvvvvvvv0");
DynamicReport dr = drb.build();
return dr;
}
答案 0 :(得分:0)
DJchart.getColumn()。getValueClassNameForExpression()
传递NULL值。你需要检查你的DJReport。它在内部创建了DJChart。