我使用iReport 5.1.0做了一个报告并部署在Tomcat服务器上,它运行得很好。但是当部署在生产服务器(Glassfish 3.1)中时,报告永远不会出现。 glassfish日志为空,因此未发现错误。
当我在eclipse(Glassfish的调试模式)中运行时,执行似乎跳进了
JasperViewer jasperViewer = new JasperViewer(re, false, null);
线。
此消息旁边是我在Tomcat中使用和工作的代码。
Pd积。原谅我的英语,我是一名土生土长的西班牙人。
代码:
public boolean mostrarReporte(String template, Map parametros) {
JasperReport report = null;
JasperPrint re = null;
Connection conn = conexion();
boolean success = true;
try {
String in = FacesUtils.getExternalContext().getRealPath(
"/reportTemplates/" + template);
report = (JasperReport) JRLoader.loadObject(in);
re = JasperFillManager.fillReport(report, parametros, conn);
JasperViewer jasperViewer = new JasperViewer(re, false, null);
// Mostrar el reporte
jasperViewer.setVisible(true);
jasperViewer.setDefaultCloseOperation(0);
parametros.clear();
} catch (JRException e) {
success = false;
e.printStackTrace();
} finally {
try {
conn.close();
} catch (Exception e) {
}
}
return success;
}
答案 0 :(得分:0)
验证生产服务器上是否包含所有jasper库:它们应位于glassfish / domains / domain1 / lib / ext下。如果罐子不存在(或者其中一些 - 比如字体或其他非强制性的lib),您可能会遇到您所描述的行为。还要确保生产计算机上的数据库不为空。如果没有要显示的数据,jasper会显示一个空页面。