Error con jasper en Diaguita 3.0.1 (pantalla blanca) - (SOLUCIONADO)

Hola comunidad, buen dia

En el ambiente de produccion (v 2.7.0) tenemos jasper funcionando ok con todos los reportes de diaguita. El java instalado es
java version “1.7.0_181”
OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-2~deb8u1)
OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)

En testing en el día de ayer actualizamos Diaguita de 2.7.0 a 3.0.0 y luego a 3.0.1. Cuando quiero ver un reporte (por ej etiquetas, bienes patrimoniales, etc - sucede con todos) queda la pantalla en blanco (adjunto screen). La versión de java instalada acá es:
java version “1.7.0_151”
OpenJDK Runtime Environment (IcedTea 2.6.11) (7u151-2.6.11-2~deb8u1)
OpenJDK 64-Bit Server VM (build 24.151-b01, mixed mode)

(En lo que respecta a java no hicimos ninguna modificacion, es la misma que teniamos funcionando con jasper para la 2.7.0 en testing)

En el log de los reportes dice lo siguiente

root@SVR-XPREAPP-03:/var/log# tail -n1000 diaguita_reportes.log
Dec 02 09:26:24 VMBridge INFO : VM                  : 1.7.0_151@http://java.oracle.com/
Dec 02 09:26:24 VMBridge INFO : VMBridge version             : 5.5.2
Dec 02 09:26:24 VMBridge INFO : logFile             : /var/log/diaguita_reportes.log
Dec 02 09:26:24 VMBridge INFO : default logLevel    : 3
Dec 02 09:26:24 VMBridge INFO : socket              : SERVLET_LOCAL:8081
Dec 02 09:26:24 VMBridge INFO : java.ext.dirs       : /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext:/usr/java/packages/lib/ext
Dec 02 09:26:24 VMBridge INFO : php.java.bridge.base: /root
Dec 02 09:26:24 VMBridge INFO : thread pool size    : 20
Dec 02 09:26:24 VMBridge INFO : JavaBridgeRunner started on port INET_LOCAL:8081
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
Dec 02 09:30:13 VMBridge ERROR: An exception occured: java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser. -- Unable to call the method, see the README section "Java platform issues" for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST!
java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser. -- Unable to call the method, see the README section "Java platform issues" for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST!
        at php.java.bridge.JavaBridge.getUnresolvedExternalReferenceException(JavaBridge.java:431)
        at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1066)
        at php.java.bridge.Request.handleRequest(Request.java:415)
        at php.java.bridge.Request.handleRequests(Request.java:491)
        at php.java.bridge.http.ContextRunner.run(ContextRunner.java:146)
        at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:124)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:89)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:104)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:62)
        at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179)
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:148)
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:311)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:772)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1054)
        ... 4 more
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
Dec 02 09:38:36 VMBridge ERROR: An exception occured: java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment. -- Unable to call the method, see the README section "Java platform issues" for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST!
java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment. -- Unable to call the method, see the README section "Java platform issues" for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST!
        at php.java.bridge.JavaBridge.getUnresolvedExternalReferenceException(JavaBridge.java:431)
        at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1066)
        at php.java.bridge.Request.handleRequest(Request.java:415)
        at php.java.bridge.Request.handleRequests(Request.java:491)
        at php.java.bridge.http.ContextRunner.run(ContextRunner.java:146)
        at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:195)
        at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
        at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:90)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:124)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:89)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:104)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:62)
        at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179)
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:148)
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:311)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:772)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1054)

Tambien ajdunto captura de la pantalla de Diaguita —> Servicio de reportes JasperReports para la generación de los PDF donde se ve que 3 chequeos están ok

Por ultimo probé en el archivo diaguita_reportes.sh agregarle -Djava.awt.headless=true Pero persiste la falla. Queda la pantalla en blanco (sin errores ni tampoco intenta descargar el reporte, directamente no hace nada).

DAEMON="/usr/bin/java -- -Djava.awt.headless=true  -Duser.language=es -Duser.country=AR -jar $RUTA_JASPER SERVLET_LOCAL:$PUERTO $NIVEL_LOG $ARCHIVO_LOG"

chequeo.jpg

chequeo.png

blanco.jpg

blanco.png

Hola Pablo,
Considerando que están en un entorno de testing, podrían dejar el display_errors en ON, en el php.ini, reiniciar el apache y volver a probar, asi vemos que error específico aparece en pantalla. En vez de ser la pantalla en blanco, les debería mostrar un error que hace que se rompa la impresión.

Otras alternativas que podrían probar son:

  • Volver a realizar un composer install
  • Reinstalar las librerías de java desde el gestor de paquetes de su distribición.
  • También pueden probar renombrar el directorio de personalización para que el sistema use los jasper originales y probar si con estos seguis teniendo el inconveniente o si funciona correctamente ahí

Avisennos que tal les va con estas pruebas.

Saludos,
María.

Maria,
Gracias por tu respuesta.

Habilité el display_errors (adjunto print con los errores)

Hice esto:

  • Volver a realizar un composer install … y se corrió sin problemas.
root@XXXX:/var/siu/SIU-Diaguita-3.0.1# composer install --no-dev
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Installing dependencies from lock file
Nothing to install or update
Package chrisboulton/php-resque is abandoned, you should avoid using it. Use resque/php-resque instead.
Package container-interop/container-interop is abandoned, you should avoid using it. Use psr/container instead.
Package phpoffice/phpexcel is abandoned, you should avoid using it. Use phpoffice/phpspreadsheet instead.
Generating autoload files
> composer run-script post-install-cmd -d ./vendor/siu-toba/framework/
Do not run Composer as root/super user! See https://getcomposer.org/root for details
> yarn install --non-interactive --modules-folder www/js/packages/
yarn install v1.15.2
[1/4] Resolving packages...
success Already up-to-date.

  • También pueden probar renombrar el directorio de personalización para que el sistema use los jasper originales y probar si con estos seguis teniendo el inconveniente o si funciona correctamente ahí

Lo probé y es lo mismo. Pantalla blanco y no cargan los reportes.

  • Reinstalar las librerías de java desde el gestor de paquetes de su distribición.
    Reinstalé:
    apt-get install openjdk-7-jre-headless
    apt-get install openjdk-7-jre

Y sucede lo mismo.

Esto es el resultado del log actual con el ultimo intento

Dec 02 16:33:21 VMBridge ERROR: An exception occured: java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment. -- Unable to call the method, see the README section "Java platform issues" for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST!
java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment. -- Unable to call the method, see the README section "Java platform issues" for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST!
        at php.java.bridge.JavaBridge.getUnresolvedExternalReferenceException(JavaBridge.java:431)
        at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1066)
        at php.java.bridge.Request.handleRequest(Request.java:415)
        at php.java.bridge.Request.handleRequests(Request.java:491)
        at php.java.bridge.http.ContextRunner.run(ContextRunner.java:146)
        at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:195)
        at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
        at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:90)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:124)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:89)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:104)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:62)
        at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179)
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:148)
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:311)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:772)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:607)
        at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1054)


1.jpg

1.png

Hola Pablo,
Te comento que googleamos y en principio parece se soluciona con Djava.awt.headless=true que agregaste. Por las dudas después del cambio, probaste hacer un:diaguita_reportes.sh restart ? ya que si no lo reinicias, no se van a aplicar los nuevos cambios del Djava.awt.headless=true

Una forma de verificar esto podría ser ejecutando el comando:ps ax | grep jasper

y en el proceso que está corriendo deberías ver algo similar a esto:
/usr/bin/java -Djava.awt.headless=true -Duser.language=es…

Si por alguna razón no te toma el reinicio del servicio, podrías probar reiniciar el server.

Estamos en contacto.

Saludos,
María

Maria

si, luego de agregar “Djava.awt.headless=true” en el diaguita_reportes.sh ya habia reiniciado el archivo (/etc/init.d/diaguita_reportes.sh restart) y seguia la pantalla en blanco al sacar un reporte, pero ahora tambien le sumé el reinició el server tal como me indicaste. (sigue la falla).

Te comento que tambien probé agregarla como una variable de entorno export JAVA_OPTS=“-Djava.awt.headless=true”

Probé el comando ps ax | grep jasper y me encuentro que sigue sin replicar el cambio
root@xxxx:/var/siu/SIU-Diaguita-3.0.1/bin# ps ax | grep jasper

  2014 ?        Sl     0:01 /usr/bin/java -Duser.language=es -Duser.country=AR -jar /var/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/jasper/JavaBridge/WEB-INF/lib/JavaBridge.jar SERVLET_LOCAL:8081 3 /var/log/diaguita_reportes.log

Lo raro es que en otro server igual, donde tengo instalado pilaga tiene la misma sentencia (en su respectivo archivo pilaga_reportes.sh) y ahi si toma el -Djava.awt.headless=true

root@Sxxxx:/var/siu/2020/SIU-Pilaga_3.7.2/bin# ps ax | grep pilaga

  5260 ?        Sl     2:04 /usr/bin/java -Djava.awt.headless=true -Duser.language=es -Duser.country=AR -jar /var/siu/2020/SIU-Pilaga_3.7.2/vendor/siu-toba/jasper/JavaBridge/WEB-INF/lib/JavaBridge.jar SERVLET_LOCAL:8081 5 /var/log/pilaga_reportes.log

Ya quedó solucionado, actualizando el archivo desde /etc/init.d/diaguita_reporte.sh impactó el cambio.
Antes lo editadaba desde /path diaguita/bin/diaguita_reportes.sh

Gracias. Ya pueden cerrar.

Buenísimo Pablo!

Saludos
María