JasperReports Library和MongoDB

时间:2012-02-24 17:52:08

标签: mongodb jasper-reports

所以这是我的源代码:

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();
        } 
    }
}

Mongo正在运行。 我在名为“test”的文件夹中有gocoffee.jrxml,当我编译时,我得到了BUILD SUCCESSFUL,但我的“test”文件夹中没有出现pdf文件。

有趣的事实:如果我做了

System.out.print("123");

这一行之后:

JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

它不起作用。

(我刚刚在此之前修复了this error。也许是相关的)

谢谢!

Ps:mdahlman你太棒了

1 个答案:

答案 0 :(得分:1)

在iReport中工作但在您的应用程序中使用JasperReports失败的报告可能意味着您错过了查询执行器。创建jasperreports.properties(或编辑现有的),确保它在类路径上,并添加以下行:

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

注意1:您应该在发布到jasperforge的来源中查看工作单元测试(使用此想法)。那真的应该有你需要的一切。

注意2:我们最近发现必须这样做很麻烦,所以我们更新了连接器,以获得执行相同角色的jasperreports_extension.properties副本。但是它包含在连接器.jar文件中,因此您不必担心它。这将很快发布。