2012-02-17 7 views
1

とGeneratePDFは私GeneratePdf.java インポートです...ここでJasperReportsの図書館とMongoDBを

public class GeneratePdf { 
     public static void main(String[] args) { 
     try { 
      JRDataSource ds = getDatasource(); 
      // - Chargement et compilation du rapport 
line32  JasperDesign jasperDesign = JRXmlLoader.load("/home/gocoffee.jrxml"); 
      JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 

      // - Paramètres à envoyer au rapport 
      Map parameters = new HashMap(); 
      parameters.put("Titre", "Titre"); 

      // - Execution du rapport 
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, 
parameters, ds); 

      // - Création du rapport au format PDF 
      JasperExportManager.exportReportToPdfFile(jasperPrint, "home/test2.pdf"); 
     } catch (JRException e) { 
     } 
    } 

モンゴ接続と(データの取得):

private static JRDataSource getDatasource() { 
     // Retrieve session 
     try{ 
      Mongo m = new Mongo("localhost", 27017); 
      DB db = m.getDB("test"); 
      DBCollection t = db.getCollection("test"); 
      List<DBObject> list = t.getIndexInfo(); 
      JRDataSource ds = new JRBeanCollectionDataSource(list); 
      return ds; 
     } catch (UnknownHostException e) { 
      System.out.println("Error mongo connection"); 
     } catch (Exception e) { 
      System.out.println("Other Exception"); 
     } 
     return null; 
    } 
} 

私はこのエラーを取得するが、私は理解しませんそれ:

run: 
17-Feb-2012 17:07:26 org.apache.commons.digester.Digester endElement 
SEVERE: End event threw exception 
java.lang.reflect.InvocationTargetException 
.... 
.... 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156) 
    at GeneratePdf.main(GeneratePdf.java:32) 

Caused by: net.sf.jasperreports.engine.JRRuntimeException: No query executer factory registered for the 'MongoDbQuery' language. 
    at net.sf.jasperreports.engine.util.JRQueryExecuterUtils.getQueryExecuterFactory(JRQueryExecuterUtils.java:64) 
    at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:1122) 
    at net.sf.jasperreports.engine.design.JRDesignDataset.setQuery(JRDesignDataset.java:600) 
    at net.sf.jasperreports.engine.design.JasperDesign.setQuery(JasperDesign.java:789) 
    ... 28 more 

答えて

3

JRBeanCollectionDataSourceを使用することは、 e MongoDBコネクター。 Jaspersoft MongoDBのコネクタのソースが付属しています。このテストを見てみましょう:

MongoDbDatasource/SRC /テスト/ javaの/ COM/jaspersoft/MongoDBの/ ReportTest.javaバイナリコネクタとソースの両方が上にある

project page

この回答を自己完結型にするために、MongoDBレポートを記入する方法を示すコードスニペットを示します。上記のファイルから変更された抜粋です。あなたは、次の行を追加する必要があり

String mongoURI = "mongodb://bdsandbox6:27017/test"; 
MongoDbConnection connection = null; 
Map<String, Object> parameters = new HashMap<String, Object>(); 
try { 
    connection = new MongoDbConnection(mongoURI, null, null); 
    parameters.put(MongoDbDataSource.CONNECTION, connection); 
    File jasperFile; 
    jasperFile = new File("MongoDbReport.jasper"); 
    JasperCompileManager.compileReportToFile("MongoDbReport.jrxml", "MongoDbReport.jasper"); 
    JasperFillManager.fillReportToFile("MongoDbReport.jasper", parameters); 
    JasperExportManager.exportReportToPdfFile("MongoDbReport.jrprint"); 
} 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    if (connection != null) { 
    connection.close(); 
    } 
} 
+0

私はあなたのブログを読んで、とても面白いです。新しい質問があります。[http://stackoverflow.com/questions/9340767/generatepdf-with-jasperreport-library - と - mongodb)あなたが私を助けることができれば。ありがとう – Louis

+0

新しい間違い!私はのlog4j.xml(log4j.properties)を追加し、私は再び同じエラーを持っている: '2012年2月24日は14時20分53秒ERROR [org.apache.commons.digester.Digester]終了イベントは例外 のjava.langを投げました。 net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156) .... \tでsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) \tでreflect.InvocationTargetException \tは、生成します。 main(Generate.java:29) 原因:net.sf.jasperreports.engine.JRRuntimeException: 'MongoDbQuery'言語に登録されているクエリ実行プログラムファクトリがありません。 ... ' – Louis

+1

こんにちはmdahlman、あなたの上記のサイトは動作していないようです。あなたはこれを見ていただけますか?サンプルコード/プロジェクト – Prateek

0


JRProperties.setProperty( "net.sf.jasperreports.query.executer.factory.MongoDbQuery"、 "com.jaspersoft.mongodb.query.MongoDbQueryExecuterFactoryを"); データソースjarファイルのパスを確認します。 js-mongodb-datasource-0.5.0

+0

コードスニペットを共有していただけますか? –

関連する問題