Para activar el modo de depuración de informes Jasper en GvHidra, dentro del proyecto PHP en el que estemos trabajando iremos al fichero: include/jasper/modulosPHP/informeJasper.PHP
Y dentro de el, hay que moverse a la linea 2 y cambiar la instrucción:
define('DEBUG', FALSE);
por:
define('DEBUG', TRUE);
y a partir de ese momento los listados ya no se exportarán a PDF ni se visualizarán y en su lugar se imprimirá en el navegador toda la información siguiente:
comando que asigna todas las variables de entorno que requieren la máquina virtual de java y jasperreports para poder ejecutarse correctamente. En principio esto sólo será útil cuando se haya instalado la aplicación en un nuevo servidor web y queramos comprobar que la instalación ha sido correcta, ya que lo que se visualiza son todos los directorios en los que se va a buscar los ficheros jar's que contienen los ejecutables de jasperreports y otras librerias necesarias.
comando que solicita la ejecución de la libreria Java de Adaptación de JasperReports a gvHidra, es decir: InformeJasper.class
los resultados obtenidos, que variarán según haya sucedido un error o no y también según el momento en el que se haya producido el error.
En el caso de que el error esté arreglado y funcione todo bien se presentará:
El fichero XML que intercambian InformeJasper.php y InformeJasper.class con la solicitud del informe a lanzar, que se compone de una primera parte en la que veremos el DTD que debe seguir el fichero xml y a continuación veremos los parámetros que se han pasado.
Hay que revisar que todos los parámetros que el usuario introduzca se envien con el valor correcto. Existe la posibilidad de que el fichero XML no se haya podido generar y ese caso lo detectaremos fácilmente porque no se mostrará el fichero en el navegador.
En el caso de que el error haya surgido al intentar ejecutar el informe con los parámetros y la conexión pasada, que es el caso más habitual, se nos presentará un mensaje al final del navegador que dirá algo similar a:
-informeJasper.php: No se generó el fichero resultado: /tmp/listadoAlumnosJasper_XiAaZx.pdf
Y justo arriba de este mensaje aparecerá toda la pila de mensajes de error devuelta por JasperReports, por ejemplo si no pasamos el valor de un parámetro requerido obtendriamos un mensaje como éste:
Resultado Ejecución: net.sf.jasperreports.engine.JRException: Error executing SQL statement for : listadoAlumnosJasper at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:141) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:682) at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:614) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:892) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:716) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:669) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) at InformeJasper.createResultFile(InformeJasper.java:282) at InformeJasper.cargaFichDatosEntrada(InformeJasper.java:724) at InformeJasper.main(InformeJasper.java:338) Caused by: org.postgresql.util.PSQLException: No se ha especificado un valor para el parámetro 1. at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:146) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:182) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:135) ... 11 more
Nótese que en primer lugar encontramos todos los métodos del API de JasperReports que han fallado empezado por el primer método que haya abortado su ejecución, y que debe acabar llegando a la clase InformeJasper.class A continuación aparece un mensaje "Caused by:" que es la linea más importante de todo el listado ya que en ella JasperReports intentará explicarnos la causa del error .
Seguiremos intentado arregalr el error hasta que al lanzarlo en el navegador ya no aparezca la pila de mensajes de error y tampoco aparezca el aviso de:
-informeJasper.php: No se generó el fichero resultado:
Si lo que tenemos en pantalla es únicamente es el fichero XML que intercambian InformeJasper.php y InformeJasper.class es que ya hemos corregido el error y en este caso debemos abandonar el modo de depuración volviendo a colocar en el fichero include/jasper/modulosPHP/informeJasper.PHP la linea define('DEBUG', FALSE);