2012-02-18 69 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