这是我的源代码:

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,当我编译成功时,在“test”文件夹中没有出现pdf文件。
有趣的事实:如果我
System.out.print("123");
在这行之后:
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
它不起作用。
(我刚在这个之前修正了this error。可能是相关的)
谢谢!
你真是太棒了

最佳答案

在ireport中工作但在使用jaspereports的应用程序中失败的报表可能意味着您缺少查询执行器。创建jaspereports.properties(或编辑现有属性),确保它位于类路径上,然后添加以下行:

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

注意1:您应该查看发布到jasperforge的源代码中的工作单元测试(它使用了这个思想)。你需要的东西都应该有。
注2:我们最近发现这样做很麻烦,所以我们更新了连接器,使其具有一个jaspereports_extension.properties副本,该副本执行相同的角色。但是它包含在connector.jar文件中,所以您不必担心它。很快就会贴出来。

关于mongodb - JasperReports Library和MongoDB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9435559/

10-11 07:31