es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar una ruta relativa para hacer referencia al esquema JSON al exportar a Json.

Tengo un informe tan simple como este:

<?xml version="1.0" encoding="UTF-8"?>
<jasperreport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="testJsonExportWithSchema" pagewidth="595" pageheight="842" columnwidth="555" leftmargin="20" rightmargin="20" topmargin="20" bottommargin="20" uuid="f59243f1-8df7-4c2a-b075-3ca20c4b17f2">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"></property>
    <property name="net.sf.jasperreports.export.json.schema" value="schema.json"></property>
    <querystring>
        <![CDATA[]]>
    </querystring>
    <detail>
        <band height="63" splittype="Stretch">
            <textfield>
                <reportelement x="0" y="0" width="555" height="63" uuid="7801126d-70f5-4d0c-9c19-3588dc5fce40">
                    <property name="net.sf.jasperreports.export.json.path" value="key"></property>
                </reportelement>
                <textfieldexpression><![CDATA["value"]]></textfieldexpression>
            </textfield>
        </band>
    </detail>
</jasperreport>

Y me gustaría exportarlo a Json utilizando el siguiente esquema Json:

{
    _type: 'object',
    key: 'value'
}

Usando una ruta relativa para el esquema (como lo hago con subinformes, imágenes y otros recursos en la misma carpeta):

<property name="net.sf.jasperreports.export.json.schema" value="schema.json"></property>

Obtengo lo siguiente:

net.sf.jasperreports.engine.JRException: No se encontró la secuencia de entrada en: schema.json

Si uso una ruta absoluta, funciona correctamente:

<property name="net.sf.jasperreports.export.json.schema" value="c:\users\username\path\to\schema.json"></property>

Esta necesidad de una ruta absoluta me impide utilizar esquemas Json en JasperReports Server también.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en jasper-reports, has observado que al intentar exportar un informe a Json utilizando una ruta relativa a un esquema Json, recibes un mensaje de error que indica “Input stream not found at: schema.json”. Sin embargo, al utilizar una ruta absoluta funciona correctamente. Esto te impide usar esquemas Json en JasperReports Server.

    Para solucionar este problema, puedes intentar utilizar un recurso de classpath en lugar de una ruta relativa o absoluta. Esto permitirá que el motor de JasperReports encuentre el esquema independientemente de la ubicación del archivo de esquema.

    Para utilizar un recurso de classpath, actualiza el elemento property de la siguiente manera:

    <property name="net.sf.jasperreports.export.json.schema" value="classpath:/ruta/al/esquema.json"></property>

    Observa el uso de “classpath:” al comienzo del atributo value.

    Esto debería permitir que el motor de JasperReports encuentre el archivo de esquema y lo utilice para exportar el informe a Json, independientemente de la ubicación del esquema y el sistema operativo en el que se esté generando el informe.

Comments are closed.