JasperReports 4.0.5ライブラリを使用してレポートを生成するJavaサービスがあります。標準の JDBC データソースでうまく機能します。
今、私はそれをolapデータソースで実行してから、XML-Aサーバーに接続しようとしています。iReportを使用した設計段階では、すべてが実行されますが、Javaで実行すると、実行時に「NullPointerException」というエラーが発生します。
私はデータソースに接続するためにolap4jライブラリを使用しています。これはiReportで使用されているものと同じ
です。これはコードです:
try{
Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
net.sf.jasperreports.engine.util.JRProperties.setProperty("net.sf.jasperreports.query.executer.factory.xmla-mdx", "net.sf.jasperreports.olap.xmla.JRXmlaQueryExecuterFactory");
final Connection connection =
DriverManager.getConnection(
"jdbc:xmla:Server=http://localhost/olap/msmdpump.dll"
+ ";Cache=org.olap4j.driver.xmla.cache.XmlaOlap4jNamedMemoryCache"
+ ";Cache.Name=MyNiftyConnection"
+ ";Cache.Mode=LFU;Cache.Timeout=600;Cache.Size=100"
+ ";Catalog=Test"
,null, null);
OlapWrapper wrapper = (OlapWrapper) connection;
OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);
String fileJrxml = "C:\\report_xmla.jrxml";
HashMap<String,Object> hm_parameters = new HashMap<String, Object>();
JasperDesign jasperDesign = JRXmlLoader.load(fileJrxml);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jp = null;
jp = JasperFillManager.fillReport(jasperReport, hm_parameters, olapConnection);
// Done
connection.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
私はどこで間違っていますか?