2012-02-18 62 views
1

所以MongoDB是在27017运行和我的集合名称为测试。GeneratePDF与JasperReport的图书馆和MongoDB

try { 
      // - Connection to base 
      String mongoURI = "mongodb://localhost:27017/test"; 
      MongoDbConnection connection = null; 

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

而且我有这样的错误,我不明白为什么:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger 
    at com.jaspersoft.mongodb.MongoDbConnection.<init>(MongoDbConnection.java:62) 
    at Generate.main(Generate.java:35) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 

的MongoURI似乎罚款,我想我没有我同意任何登录名或密码

+0

这不是一个mongo问题 - 例外是在jasper中,它看起来像一个简单的类加载问题,因为jasper正在寻找log4j - 你是否安装了log4j并且在系统类路径中? – 2012-02-20 11:54:47

+0

不,我没有安装log4j我甚至不知道它是什么但我即将安装它 – Louis 2012-02-20 18:38:02

回答

2

@AdamC:你需要log4j。但我会说这不是“安装”它的问题;你只需要添加一个log4j.jar文件到你的项目类路径。你的代码看起来很好。

编辑:从我的评论中移动信息到答案。

除了将log4j.jar添加到类路径之外,还需要一个名为log4j.properties的文件来配置log4j。你可以创建自己的,或者你可以抓住上jasperforge从MongoDB的连接器源副本。寻找src/main/resources/log4j.properties。

+0

我现在有这个错误:'log4j:警告没有appender可以发现记录器(net.sf.jasperreports.engine。 xml.JRXmlDigesterFactory)。 的log4j:WARN请正确初始化log4j的系统。 log4j:WARN请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig了解更多信息.'我看到了一些关于放入评论JasperViewer.viewReport(print)的答案;该错误是在Java代码,但我没有看到这个问题 – Louis 2012-02-22 11:37:36

+0

这意味着你现在log4.jar,但它没有配置。您需要将log4j.properties添加到您的类路径中。你现在可以想出如何创建它,现在你知道你需要它。或者,您可以从http://jasperforge.org/bigdata的MongoDB连接器源获取副本。寻找src/main/resources/log4j.properties。 – mdahlman 2012-02-22 17:55:09

+0

嘿@mdahlman需要你的帮助[here](http://stackoverflow.com/questions/9499579/coffeescript-nodejs-mongodb-and-jasperreports-is-it-possible)谢谢 – Louis 2012-02-29 14:44:01