2012-02-24 118 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);

它不工作。

(我只是固定this error这一个,也许它的相关之前)

谢谢!

PS:mdahlman你真棒

+0

为什么你忽略了所有异常?你检查了异常吗?您是否尝试调试应用程序? – 2012-02-24 19:33:46

+0

我不会忽视我没有的任何异常。我将在明天尝试。 – Louis 2012-02-24 22:20:33

+1

你说代码'System.out.print(“123”);'不起作用 - 这意味着会引发一些异常。 – 2012-02-25 09:30:42

回答

1

报告在iReport的工作,但在你的应用程序,使用的JasperReports可能失败意味着你缺少的查询执行者。创建jasperreports.properties(或编辑现有的),请确保它在classpath中,并添加此行:源你应该看看在工作单元测试(使用这种想法):

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

注1这是张贴到jasperforge。这真的应该有你需要的一切。注2:最近我们发现必须这么做很麻烦,所以我们更新了连接器,使其具有执行相同角色的jasperreports_extension.properties副本。但是它包含在连接器.jar文件中,所以您不必担心它。这将很快发布。

+0

谢谢你真的有帮助。我只是将它添加到我的类路径中,一切正常! – Louis 2012-02-25 15:02:39

+0

@mdahlman - 我们如何获得相应的jar文件添加到类路径中?是否有任何Maven依赖? – 2017-01-26 11:34:07