Versión de java antigua para implementar en servers de guarani

Continuando la discusión desde Problema al usar Certificado analitico con imagen cargada de personas_foto:

Buenas noches. En función de los discutido en este foro, seguimos con algunos inconvenientes para poder recuperar imágenes de la base de datos en un jasper.

Al parecer, cuando funciona en el ireport 5.6, no funciona cuando lo implementamos en guarani. Por lo que entiendo y pude comprobar, puede llegar a tratarse de la versión de java que usa ireport (jdk1.7.0_80) y la versión instalada en cualquier implementación de guarani, la cual, siguiendo las indicaciones del SIU, se realiza mediante un apt-get install default-jdk y obviamemnte es mucho más moderna.

Pareciera que hay métodos de java como por ejemplo
net.sf.jasperreports.engine.util.JRImageLoader.getInstance(new SimpleJasperReportsContext()).loadAwtImageFromBytes(javax.xml.bind.DatatypeConverter.parseBase64Binary($F{imagen})) o net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte ) $F{imagen})
que funcionan en java 7, pero no así en las versiones más nuevas.

Lo que hice como prueba y posible solución fue copiar la carpeta jdk1.7.0_80 al server donde se implementa un testing de guarani y ejecutar el jasper mediante esta versión en lugar de la versión original del sistema operativo debian y he conseguido que funcione. He probado varios formularios jasper más y pareciera que no habría problemas. Por lógica, si estamos compilando con ireport 5.6, que usa esa versión de java, no debería haber inconvenientes en utilizar la misma versión en la implementación, no?

Quisiera saber si alguien ya ha pasado por algo así o ha probado de usar estas versiones de java para el jasper y si han tenido inconvenientes o es muy alocado lo que estoy intentando.

Desde ya muchas gracias!!!

Pablo

Hola pablo buenos dias
Reporto esto a los chicos tecnicos para que lo vean y den una respuesta si? esto les esta sucediendo en la misma version que reportaron en el otro foro o no ? version 3.21.2 ? y si nos pueden enviar el error y logs del mismo si?

saludos!

Buenas tardes Pablo!

En principio, no habría inconvenientes, pero no tenemos pruebas con una versión cerrada del JDK, por lo que no sabemos exactamente si existen incompatibilidades hacia atrás.
Te recomiendo probar los reportes que utilicen Jasper para descartar errores de compatibilidad.

Saludos!

Hola, Sebastian. Disculpas por la demora en responder. Surgieron algunas urgencias y no pude armar aún la respuesta. Lo de los logs del jasper, no los tengo en este momento a mano, pero cuando los revisé hace un tiempo, basicamente era que la función no era compatible con la versión de java.
Intentẃe reproducirlo ahora con el analitico original y con ambas versiones de java me da casi el mismo error con respecto a la funcion loadImage.
Sin embargo, en nuestra personalizacion, en lugar de usar dicha función, la cambiamos por net.sf.jasperreports.engine.util.JRImageLoader.getInstance(new SimpleJasperReportsContext()).loadAwtImageFromBytes(javax.xml.bind.DatatypeConverter.parseBase64Binary($F{imagen}))
COn esta función en java 11 no anda, da un error casi igual al que se adjunta. Sin embargo, en java 7 funciona perfectamente.

Cabe aclarar que la recuperacion desde postgres cambia un poco. En lugar de traer el objeto bytea puro, la recupero desde postgres con encode(imagen,‘base64’) as imagen

Muchas gracias!!!

Pablo
jasper.log (318,5 KB)

Muchas gracias, Gabriel!!! De igual manera, sigue siendo conveniente que los reportes sean compilados mediante la versión 5.6 de ireport, no? SI es así, y no estoy equivocado, la versión de java con la que se compilan los jasper es la 7. Estaré probando los resportes por si hubiera alguan cuestión de incompatibilidad.
Desde ya muchas gracias!!!

Pablo