我试图在普通的Java应用程序中使用JasperReports库。它不会编译,因为它找不到爱琴海图表主题。有人能指出一个如何获取.jrxml文件进行编译并将此主题传递给JasperCompileManager的简单示例吗?
package com.asset.jasper.mvc.reports;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.sql.PreparedStatement;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
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;
import net.sf.jasperreports.chartthemes.simple.AegeanSettingsFactory;
import net.sf.jasperreports.chartthemes.simple.XmlChartTheme;
import net.sf.jasperreports.chartthemes.spring.AegeanChartTheme;
public class AssetReport {
private static final Log log = LogFactory.getLog (AssetReport.class);
public static void main(String[] args) throws JRException, IOException {
AegeanChartTheme aegeanChartTheme = new AegeanChartTheme();
XmlChartTheme.saveSettings(
AegeanSettingsFactory.createChartThemeSettings(),
new File("src/net/sf/jasperreports/chartthemes/simple/aegean.jrctx")
);
JasperReport jasperReport = JasperCompileManager.compileReport(
"/resources/ARKREPORT.jrxml");
Map<String, Object> parameters = new HashMap<String, Object>();
Connection myconnection = getConnection();
String jdbcString = "select * from asset";
PreparedStatement statement = null;
try {
statement = myconnection.prepareStatement(jdbcString.toString());
} catch (SQLException e) {
e.printStackTrace();
}
ResultSet rs = null;
try {
rs = statement.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
JRDataSource dataSource = new JRResultSetDataSource(rs);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
File outDir = new File("/Users/denisputnam/tmp");
outDir.mkdirs();
JasperExportManager.exportReportToPdfFile(jasperPrint, "/tmp/StyledTextReport.pdf");
JasperExportManager.exportReportToHtmlFile(jasperPrint, "/tmp/StyledTextReport.html");
}
static public Connection getConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/assetcore", "assetcore", "password");
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
}