所以这是我的源代码:
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你太棒了
答案 0 :(得分:1)
在iReport中工作但在您的应用程序中使用JasperReports失败的报告可能意味着您错过了查询执行器。创建jasperreports.properties(或编辑现有的),确保它在类路径上,并添加以下行:
net.sf.jasperreports.query.executer.factory.MongoDbQuery=com.jaspersoft.mongodb.MongoDbQueryExecuterFactory
注意1:您应该在发布到jasperforge的来源中查看工作单元测试(使用此想法)。那真的应该有你需要的一切。
注意2:我们最近发现必须这样做很麻烦,所以我们更新了连接器,以获得执行相同角色的jasperreports_extension.properties副本。但是它包含在连接器.jar文件中,因此您不必担心它。这将很快发布。