Olá. Estou com um problema na geração de subrelatórios. Tenho uma classe chamado Pallet que contem uma lista de objetos da classe PalletProd. Quando vou compilar o relatório sem o subreport, o jasper mostra a lista de pallets. Quando coloco o subreport, dá um erro chamado “Resource not found at: src/br/com/wms/web/jasperreport/etiquetas.jasper”. Já procurei em vários lugares, mas não estou tendo êxito.
Classe Pallet
public class Pallet {
private String empresa;
private String pallet;
private String entrada;
private String barCodeEAN128;
private List<PalletProd> produtos;
//getters e setters
}
Clase ProdPallet
public class PalletProd {
private String codigo;
private String descricao;
private String codigoBarra;
private String quantidade;
private String unidade;
private String peso;
private String validade;
//getters e setters
}
Meu principal relatório
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.5.1.final using JasperReports Library version 6.5.1 -->
<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="pallet" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isIgnorePagination="true" uuid="69e81550-7c27-4837-9316-6ba6dab051ba">
<property name="net.sf.jasperreports.export.pdf.flexible.row.height" value="true"/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="empresa" class="java.lang.String"/>
<field name="pallet" class="java.lang.String"/>
<field name="entrada" class="java.lang.String"/>
<field name="barCodeEAN128" class="java.lang.String"/>
<field name="produtos" class="java.util.List"/>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="86" splitType="Stretch">
<line>
<reportElement x="0" y="0" width="554" height="1" uuid="187ff414-5d27-4836-9b89-d94ebb38fc3c"/>
</line>
<line>
<reportElement x="0" y="0" width="1" height="86" uuid="44cb5baf-65e0-43e7-b8ac-33116017d97b"/>
</line>
<line>
<reportElement x="554" y="0" width="1" height="85" uuid="06b9a678-94f9-469d-a428-738d5f7260c7"/>
</line>
<staticText>
<reportElement x="18" y="10" width="90" height="10" uuid="965f8183-2df5-478f-a2ac-45b5b8590877"/>
<textElement>
<font size="8"/>
</textElement>
<text><![CDATA[Empresa]]></text>
</staticText>
<textField>
<reportElement x="197" y="20" width="160" height="50" uuid="4f016432-ccf4-40ed-a86a-ba44bcaa7699"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{empresa}]]></textFieldExpression>
</textField>
</band>
<band height="217">
<line>
<reportElement x="554" y="-1" width="1" height="212" uuid="f096e5ef-96c3-4214-95a1-b3ce71ccf587"/>
</line>
<line>
<reportElement x="0" y="-1" width="1" height="212" uuid="2d763c8c-1cff-414f-b6d5-7720f22e4e6a"/>
</line>
<line>
<reportElement x="1" y="0" width="553" height="1" uuid="40b87f47-18f4-4b36-9a5a-d6ee7640cddb"/>
</line>
<line>
<reportElement x="0" y="211" width="555" height="1" uuid="3c6bf5f0-ade3-49e7-86ad-11fe815d4b35"/>
</line>
<subreport>
<reportElement x="10" y="5" width="540" height="200" uuid="73395665-1795-46a7-a9cb-d18e89523f1e"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{produtos})]]></dataSourceExpression>
<subreportExpression><![CDATA["src/br/com/wms/web/jasperreport/etiquetas.jasper"]]></subreportExpression>
</subreport>
</band>
<band height="172">
<componentElement>
<reportElement x="187" y="80" width="177" height="40" uuid="d891e4c6-304f-49b6-b49a-599847876eb4"/>
<jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="EAN128" drawText="false" checksumRequired="false" barWidth="1">
<jr:codeExpression><![CDATA[$F{barCodeEAN128}]]></jr:codeExpression>
</jr:barbecue>
</componentElement>
<textField>
<reportElement x="188" y="120" width="177" height="30" uuid="dfe79aeb-d2f7-4266-8f81-328a2fb4ea06"/>
<textElement textAlignment="Center"/>
<textFieldExpression><![CDATA[$F{barCodeEAN128}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="10" y="10" width="100" height="20" uuid="d4f86b7f-fea8-4dd8-b91d-494e2818860f"/>
<text><![CDATA[Pallet]]></text>
</staticText>
<textField>
<reportElement x="9" y="30" width="100" height="20" uuid="83b75777-ab84-4bbd-9b9c-0f79e5d7abad"/>
<textFieldExpression><![CDATA[$F{pallet}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="440" y="10" width="100" height="20" uuid="012ae116-48a7-4cde-a2f1-08f81cab8f41"/>
<text><![CDATA[Entrada]]></text>
</staticText>
<textField>
<reportElement x="440" y="30" width="100" height="20" uuid="402d8ea1-ae73-43d9-a1d2-6c3f0f6dcaa0"/>
<textElement>
<font isBold="false"/>
</textElement>
<textFieldExpression><![CDATA[$F{entrada}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="0" width="1" height="172" uuid="993897d4-db94-4e31-a246-377461ff07b1"/>
</line>
<line>
<reportElement x="554" y="0" width="1" height="172" uuid="bc2662a3-a626-48a7-bacd-ebba7a03292d"/>
</line>
</band>
</detail>
<columnFooter>
<band height="72" splitType="Stretch">
<property name="com.jaspersoft.studio.layout"/>
<line>
<reportElement x="0" y="0" width="555" height="1" uuid="3445e571-c89d-47d7-a990-40ac74516372"/>
</line>
<textField>
<reportElement x="350" y="20" width="100" height="30" uuid="f86f95ad-269d-4dde-96a9-3b9245ec09c6"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA["Page " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="450" y="20" width="100" height="30" uuid="34536c4e-e6df-4b73-9ff7-a49d684f7385"/>
<textElement textAlignment="Left"/>
<textFieldExpression><![CDATA[" of " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</columnFooter>
</jasperReport>
Meu subrelatório
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.5.1.final using JasperReports Library version 6.5.1 -->
<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="etiquetas" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a43f3360-728c-411b-931a-4c74b76f834d">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="codigo" class="java.lang.String"/>
<field name="descricao" class="java.lang.String"/>
<field name="codigoBarra" class="java.lang.String"/>
<field name="quantidade" class="java.lang.String"/>
<field name="unidade" class="java.lang.String"/>
<field name="peso" class="java.lang.String"/>
<field name="validade" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="97" splitType="Stretch">
<staticText>
<reportElement x="-100" y="0" width="100" height="30" uuid="19918356-775a-4b0f-a853-7b1a735e079c"/>
<text><![CDATA[palletProds]]></text>
</staticText>
<staticText>
<reportElement x="19" y="10" width="90" height="20" uuid="e5229eb0-04d6-41f6-9c47-8bc2713a3b7d"/>
<textElement>
<font size="8"/>
</textElement>
<text><![CDATA[Código]]></text>
</staticText>
<textField>
<reportElement x="19" y="20" width="90" height="20" uuid="c257e3ba-d09c-4d3f-a515-0578012630b7"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{codigo}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="131" y="10" width="100" height="20" uuid="53d4ceb0-9d9c-4e52-b309-85432768e962"/>
<textElement>
<font size="8"/>
</textElement>
<text><![CDATA[Descrição]]></text>
</staticText>
<textField>
<reportElement x="131" y="20" width="278" height="20" uuid="2bf8fe8a-87db-4edc-b0dc-f0d5f0a0fbf9"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{descricao}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="19" y="45" width="90" height="10" uuid="317b8675-1a3f-48ad-b066-3f29329bf238"/>
<textElement>
<font size="8"/>
</textElement>
<text><![CDATA[Quantidade]]></text>
</staticText>
<textField>
<reportElement x="19" y="55" width="90" height="20" uuid="f5f097d7-8ed5-4bde-ad77-ec318e602589"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{quantidade}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="131" y="45" width="54" height="10" uuid="dcd4577b-8329-459c-a394-0410e5a935d3"/>
<textElement>
<font size="8"/>
</textElement>
<text><![CDATA[Unidade]]></text>
</staticText>
<textField>
<reportElement x="131" y="55" width="38" height="20" uuid="cff5fd0a-6c6a-48b6-91c3-438880c863a4"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{unidade}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="199" y="45" width="100" height="10" uuid="cf1fa684-2600-4c6c-b81e-ddd206bc3d00"/>
<textElement textAlignment="Center">
<font size="8"/>
</textElement>
<text><![CDATA[Peso]]></text>
</staticText>
<textField>
<reportElement x="199" y="55" width="100" height="20" uuid="bc72adb6-f54b-44fc-82dd-4b210e5c2c64"/>
<textElement textAlignment="Center">
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{peso}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="309" y="45" width="100" height="10" uuid="397ea997-4df7-4437-9f52-aabd5880e9f8"/>
<textElement>
<font size="8"/>
</textElement>
<text><![CDATA[Validade]]></text>
</staticText>
<textField>
<reportElement x="309" y="55" width="100" height="20" uuid="2a825a76-b043-444e-bba0-d9b4a7336e04"/>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{validade}]]></textFieldExpression>
</textField>
<componentElement>
<reportElement x="429" y="20" width="100" height="20" uuid="fa16efaa-9b7c-4ffe-a4f8-80d3b85785da"/>
<jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="EAN13" drawText="false" checksumRequired="false">
<jr:codeExpression><![CDATA[$F{codigoBarra}]]></jr:codeExpression>
<jr:applicationIdentifierExpression><![CDATA[$F{codigoBarra}]]></jr:applicationIdentifierExpression>
</jr:barbecue>
</componentElement>
<textField>
<reportElement x="429" y="55" width="100" height="20" uuid="2e27a143-1e13-46ff-b832-e78b1dd18b12"/>
<textElement textAlignment="Center"/>
<textFieldExpression><![CDATA[$F{codigoBarra}]]></textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
</jasperReport>
A classe que uso para compilar o relatório
package teste;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import br.com.wms.web.jasperreport.model.Pallet;
import br.com.wms.web.jasperreport.model.PalletProd;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class JasperClass {
public static void main(String[] args) throws JRException {
try {
/* List to hold */
ArrayList<Pallet> pallets = new ArrayList<Pallet>();
//Pallet 1
ArrayList<PalletProd> listaProdPallet1= new ArrayList<PalletProd>();
PalletProd palletProd1 = new PalletProd();
palletProd1.setCodigo("testando cdigo");
palletProd1.setDescricao("Sandalia havaiana azul 34/5");
palletProd1.setCodigoBarra("012345678901");
palletProd1.setQuantidade("10");
palletProd1.setUnidade("Par");
palletProd1.setPeso("20 KG");
palletProd1.setValidade("");
PalletProd palletProd2 = new PalletProd();
palletProd2.setCodigo("205003");
palletProd2.setDescricao("Sandalia havaiana azul 35/6");
palletProd2.setCodigoBarra("012345678912");
palletProd2.setQuantidade("7");
palletProd2.setUnidade("Par");
palletProd2.setPeso("16 KG");
palletProd2.setValidade("Indeterminado");
PalletProd palletProd3 = new PalletProd();
palletProd3.setCodigo("205004");
palletProd3.setDescricao("Sandalia havaiana azul 35/6");
palletProd3.setCodigoBarra("012345678914");
palletProd3.setQuantidade("7");
palletProd3.setUnidade("Par");
palletProd3.setPeso("16 KG");
palletProd3.setValidade("Indeterminado");
listaProdPallet1.add(palletProd1);
listaProdPallet1.add(palletProd2);
listaProdPallet1.add(palletProd3);
Pallet palletTeste1 = new Pallet();
palletTeste1.setEntrada("15/05/18");
palletTeste1.setEmpresa("HB Alimentos");
palletTeste1.setPallet("P2015061234");
palletTeste1.setBarCodeEAN128("01950123456789033103000123");
palletTeste1.setProdutos(listaProdPallet1);
pallets.add(palletTeste1);
/* Convert List to JRBeanCollectionDataSource */
// JRBeanCollectionDataSource palletsJRBean = new JRBeanCollectionDataSource(palletTeste1.getProdutos());
// /* Map to hold Jasper report Parameters */
// Map<String, Object> parameters = new HashMap<String, Object>();
// parameters.put("PalletDataSource", palletsJRBean);
// parameters.put("empresa", palletTeste1.getEmpresa());
// parameters.put("pallet", palletTeste1.getPallet());
// parameters.put("entrada", palletTeste1.getEntrada());
// parameters.put("barCodeEAN128", palletTeste1.getBarCodeEAN128());
//Pallet 2
ArrayList<PalletProd> listaProdPallet2= new ArrayList<PalletProd>();
PalletProd pallet4 = new PalletProd();
pallet4.setCodigo("205002");
pallet4.setDescricao("Sandalia havaiana azul 34/5");
pallet4.setCodigoBarra("012345678901");
pallet4.setQuantidade("10");
pallet4.setUnidade("Par");
pallet4.setPeso("20 KG");
pallet4.setValidade("");
PalletProd pallet5 = new PalletProd();
pallet5.setCodigo("205003");
pallet5.setDescricao("Sandalia havaiana azul 35/6");
pallet5.setCodigoBarra("012345678912");
pallet5.setQuantidade("7");
pallet5.setUnidade("Par");
pallet5.setPeso("16 KG");
pallet5.setValidade("Indeterminado");
PalletProd pallet6 = new PalletProd();
pallet6.setCodigo("205009");
pallet6.setDescricao("Sandalia havaiana azul 35/6");
pallet6.setCodigoBarra("012345678914");
pallet6.setQuantidade("7");
pallet6.setUnidade("Par");
pallet6.setPeso("16 KG");
pallet6.setValidade("Nao sei");
listaProdPallet2.add(pallet4);
listaProdPallet2.add(pallet5);
listaProdPallet2.add(pallet6);
Pallet palletTeste2 = new Pallet();
palletTeste2.setEntrada("15/05/18");
palletTeste2.setEmpresa("HB Alimentos2");
palletTeste2.setPallet("teste");
palletTeste2.setBarCodeEAN128("01950123456789033103000111");
palletTeste2.setProdutos(listaProdPallet2);
pallets.add(palletTeste2);
final JasperReport reportJasper = JasperCompileManager.compileReport("/Users/renan/eclipse-workspace/TriviaWMSFirebird/src/br/com/wms/web/jasperreport/etiquetaPallet.jrxml");
final JasperReport subReport = JasperCompileManager.compileReport("/Users/renan/eclipse-workspace/TriviaWMSFirebird/src/br/com/wms/web/jasperreport/etiquetas.jrxml");
final JRBeanCollectionDataSource coll = new JRBeanCollectionDataSource(pallets);
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("PalletDataSource", coll);
final JasperPrint jasperPrint = JasperFillManager.fillReport(reportJasper, parameters, coll);
final File pdf = new File("teste.pdf");
final OutputStream out = new FileOutputStream(pdf);
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
System.out.println("File Generated");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Por favor, preciso da ajuda de vocês.
Atenciosamente,
Renan Luna