2012-02-24 11 views
2

だからここは私のソースコードは次のとおりです。JasperReportsの図書館やMongoDBの

import com.jaspersoft.mongodb.MongoDbConnection; 
import com.jaspersoft.mongodb.MongoDbDataSource; 
import java.io.File; 
import java.net.UnknownHostException; 
import java.util.HashMap; 
import java.util.Map; 
import net.sf.jasperreports.engine.JasperCompileManager; 
import net.sf.jasperreports.engine.JasperExportManager; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.JasperReport; 
import net.sf.jasperreports.engine.design.JasperDesign; 
import net.sf.jasperreports.engine.xml.JRXmlLoader; 

public class Generate { 

    public static void main(String[] args) throws UnknownHostException { 
     try { 
      // - Connexion à la base 
      String mongoURI = "mongodb://localhost/test"; 
      MongoDbConnection connection = null; 

      Map<String, Object> parameters = new HashMap<String, Object>(); 
      try { 
       connection = new MongoDbConnection(mongoURI,null,null); 
       parameters.put(MongoDbDataSource.CONNECTION, connection); 
       JasperDesign jasperDesign = JRXmlLoader.load("/home/test/gocoffee.jrxml"); 
       JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
       File jasperFile; 
       jasperFile = new File("/home/test/MongoDbReport.jasper"); 
       JasperCompileManager.compileReportToFile("/home/test/gocoffee.jrxml", "/home/test/MongoDbReport.jasper"); 
       JasperFillManager.fillReportToFile("/home/test/MongoDbReport.jasper", parameters);    
       JasperExportManager.exportReportToPdfFile("/home/test/MongoDbReport.jrprint"); 
      } catch(Exception e) { 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

モンゴが実行されています。 "test"という名前のフォルダにgocoffee.jrxmlがあります。コンパイルするとBUILD SUCCESSFULが表示されますが、 "test"フォルダにpdfファイルは表示されません。

興味深い事実:私は、この行の後

System.out.print("123");

を行う場合:

JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

それは動作しません。

(私はこの1つだけ前にthis errorを固定。たぶんその関連)

ありがとう!

シモンズ:mdahlmanあなたが素晴らしいです

+0

なぜあなたはすべての例外を無視していますか?あなたは例外をチェックしましたか?アプリケーションをデバッグしようとしましたか? –

+0

私は何も持っていないすべての例外を無視していません。そして私は明日それを試みるつもりです。 – Louis

+1

コード 'System.out.print(" 123 ");'は機能しません。何らかの例外が発生したことを意味します。 –

答えて

1

レポートiReportはでの作業が、JasperReportsのを使用して、アプリケーションに失敗は、おそらくあなたは、クエリの実行者を逃していることを意味します。 jasperreports.properties(または既存のものを編集)を作成し、必ずそれはクラスパス上にある作り、この行を追加します。

net.sf.jasperreports.query.executer.factory.MongoDbQuery=com.jaspersoft.mongodb.MongoDbQueryExecuterFactory 

注1:あなたがソースに(このアイデアを使用しています)作業ユニットテストをご覧くださいそれはjasperforgeに投稿されました。それは本当に必要なすべてを持っている必要があります。

注2:私たちは最近、これを行うのが面倒だと考えました。そのため、同じ役割を果たすjasperreports_extension.propertiesのコピーを持つようにコネクタを更新しました。しかしそれはコネクタの.jarファイルに含まれているので、気にする必要はありません。それはすぐに掲載されます。

+0

本当に助けていただきありがとうございます。私はクラスパスに追加しました。 – Louis

+0

@mdahlman - それぞれのjarファイルをクラスパスに追加する方法は?どのような依存関係もありますか? –

関連する問題