Visualizzazione dei risultati da 1 a 7 su 7

Discussione: JasperReport

  1. #1

    JasperReport

    Salve,
    partendo da un file .jrxml devo generare il relativo .jasper da visualizzare per dare all'utente finale la possibilità di stampa
    Il codice che utilizzo è il seguente :
    codice:
     try {
                JasperPrint jasperPrint = JasperFillManager.fillReport(JasperCompileManager.compileReportToFile(nomef), new HashMap(),
                        new JRTableModelDataSource(tableModel));
                JasperViewer jasperViewer = new JasperViewer(jasperPrint);
                jasperViewer.setVisible(true);            
            } catch (JRException ex) {
                
                JOptionPane.showMessageDialog(new JPanel(), ex);
            }
    se faccio partire l'applicazione dall'ambiente di sviluppo (netbeans 8.1) non ho nessun errore ma se faccio partire esternamente il .jar ottengo il seguente errore da cui non riesco a venirne a capo :

    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Unknown Source)
            at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(J
    RClassLoader.java:156)
            at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRCla
    ssLoader.java:114)
            at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.getFactory(BaseS
    axParserFactory.java:261)
            at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRX
    mlDigesterFactory.java:1579)
            at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(J
    RXmlDigesterFactory.java:1549)
            at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:263
    )
            at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:219
    )
            at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:194
    )
            at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:185
    )
            at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(Jasper
    CompileManager.java:227)
            at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(
    JasperCompileManager.java:542)
            at ETICHETTEPDF.CreaXRMLV2.parti(CreaXRMLV2.java:213)
    la riga 213 di CreaXRMLV2.java è la prima riga del codice che ho precedentemente scritto, avete idee di quale possa essere il problema ? dove sbaglio ?
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    La prima cosa che mi viene in mente è che il nome del file non punti correttamente al file JRXML.
    Per averne la certezza, spezza quella riga di codice in tre distinte operazioni:

    1) Compilazione del JRXML e creazione del file .jasper
    2) Caricamento del file Jasper
    3) Riempimento del report

    Secondo me ad andare in errore è la prima: non trova il JRXML e, di conseguenza, non lo compila (ma è una mia ipotesi)

    codice:
    String nomef = ...   // Nome del file JRXML
    String nomeJasper = ...   // Nome del file Jasper prodotto dalla compilazione
    
    // Compilo il file JRXML
    JasperCompileManager.compileReportToFile( nomef );
    
    // Carico il file Jasper relativo
    JasperReport report = (JasperReport) JRLoader.loadObject( new File(nomeJasper) );
    
    // Riempio il report
    JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String,Object>(), new JRTableModelDataSource(tableModel));
    Se, come credo, ad andare in errore è la prima istruzione, la soluzione è semplice: stai puntando male il tuo file JRXML, di conseguenza il tuo ambiente di sviluppo (avendo una sua working directory) lo trova, mentre qualunque altra esecuzione non lo troverebbe mai.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ciao, grazie per aver risposto !

    Ho reimpostato il codice :
    codice:
      String nomef=System.getProperty("user.dir")+"\\modeti\\"+nomeFile+".jrxml";
            String nomeJasper=System.getProperty("user.dir")+"\\modeti\\"+nomeFile+".jasper";
            System.out.println(nomef);
            IO.salva(nomef, foglio);
            try {
    
    
                // Compilo il file JRXML
                JasperCompileManager.compileReportToFile(nomef);
    
    
    // Carico il file Jasper relativo
                JasperReport report = (JasperReport) JRLoader.loadObject(new File(nomeJasper));
    
    
    // Riempio il report
                JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String, Object>(), new JRTableModelDataSource(tableModel));
                JasperViewer jasperViewer = new JasperViewer(print);
                jasperViewer.setVisible(true);            
            } catch (JRException ex) {
                
                JOptionPane.showMessageDialog(new JPanel(), ex);
            }
    il file jrxml è presente nella cartella ma continua a bloccarsi sempre alla seguente istruzione :

    codice:
                JasperCompileManager.compileReportToFile(nomef);
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  4. #4
    codice:
    public static JasperDesign load(String sourceFileName) throws JRException//FIXMEREPO consider renaming	{
    		return load(DefaultJasperReportsContext.getInstance(),  sourceFileName);
    	}
    quel DefaultJasperReportsContext.getInstance() mi torna un null

    ora cerco di documentarmi su cosa fa questa classe ma se per caso qualcuno di voi la conosce e mi fornisce qualche indizio per la soluzione del problema è ben accetto
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  5. #5
    Ho modificato il metodo compileToFile di JasperCompileManager :
    codice:
    public String compileToFile(String sourceFileName) throws JRException
        {
            File sourceFile = new File(sourceFileName);
    
    
                    System.out.println(sourceFileName+"<sourceFileName");
                    
                    JasperReportsContext c = DefaultJasperReportsContext.getInstance();
                Map map = c.getProperties();
                Set keys = map.keySet();
    
    
                for (Iterator i = keys.iterator(); i.hasNext();) {
                    String key = (String) i.next();
                    String value = (String) map.get(key);
                     System.out.println(key + " = " + value);
                }
    
    
    
    
                    
            JasperDesign jasperDesign = JRXmlLoader.load(c,sourceFileName);
    
    
            File destFile = new File(sourceFile.getParent(), jasperDesign.getName() + ".jasper");
            String destFileName = destFile.toString();
    
    
            compileToFile(jasperDesign, destFileName);
            
            return destFileName;
        }
    ho fatto questa modifica per vedere le differenza dell'oggetto JasperReportsContext quando parte da netbeans rispetto a quando parte dal .jar esterno all'ambiente
    ci sono xmila righe in + nell'ambiente di sviluppo rispetto a quello esterno . secondo voi l'errore può venire dalla mancanza di una delle seguenti righe ?

    codice:
    net.sf.jasperreports.print.create.bookmarks = false
    net.sf.jasperreports.components.sort.up.arrow.char = 
    net.sf.jasperreports.default.line.spacing.size = 1
    net.sf.jasperreports.components.table.when.no.data.type = Blank
    net.sf.jasperreports.default.spacing.before = 0
    net.sf.jasperreports.query.executer.factory.CSV = net.sf.jasperreports.engine.query.JRCsvQueryExecuterFactory
    net.sf.jasperreports.page.break.no.pagination = ignore
    net.sf.jasperreports.export.xml.parser.factory = net.sf.jasperreports.engine.xml.PrintSaxParserFactory
    net.sf.jasperreports.query.executer.factory.XLS = net.sf.jasperreports.engine.query.ExcelQueryExecuterFactory
    net.sf.jasperreports.export.pdf.size.page.to.content = false
    net.sf.jasperreports.image.dpi = 72
    net.sf.jasperreports.export.csv.field.enclosure = "
    net.sf.jasperreports.compiler.xml.parser.factory = net.sf.jasperreports.engine.xml.JRReportSaxParserFactory
    net.sf.jasperreports.export.default.filter.factory = net.sf.jasperreports.engine.export.DefaultExporterFilterFactory
    net.sf.jasperreports.web.servlets.viewer.footer.template = net/sf/jasperreports/web/servlets/resources/viewer/FooterTemplate.vm
    net.sf.jasperreports.print.collapse.missing.bookmark.levels = false
    net.sf.jasperreports.print.transfer.awt = net.sf.jasperreports.awt
    net.sf.jasperreports.components.barcode4j.image.producer = svg
    net.sf.jasperreports.export.pdf.glyph.renderer.add.actual.text = true
    net.sf.jasperreports.web.request.parameter.resource.uri = jr.resource
    net.sf.jasperreports.export.pdf.print.scaling = default
    net.sf.jasperreports.query.executer.factory.csv = net.sf.jasperreports.engine.query.JRCsvQueryExecuterFactory
    net.sf.jasperreports.evaluator.class.reference.fix.enabled = true
    net.sf.jasperreports.allow.element.negative.y = true
    net.sf.jasperreports.governor.timeout.enabled = true
    net.sf.jasperreports.print.transfer.file.buffer.os = net.sf.jasperreports.file.buffer.os
    net.sf.jasperreports.allow.element.negative.x = true
    net.sf.jasperreports.web.request.parameter.dynamic.resource = jr.dynamic
    net.sf.jasperreports.default.left.indent = 0
    net.sf.jasperreports.javascript.evaluator.optimization.level = 0
    net.sf.jasperreports.query.executer.factory.xls = net.sf.jasperreports.engine.query.ExcelQueryExecuterFactory
    org.eclipse.jdt.core.compiler.source = 1.5
    net.sf.jasperreports.styles.inherit.from.default = true
    net.sf.jasperreports.export.pdf.collapse.missing.bookmark.levels = false
    net.sf.jasperreports.web.servlets.viewer.body.template = net/sf/jasperreports/web/servlets/resources/viewer/BodyTemplate.vm
    net.sf.jasperreports.components.table.generate.pdf.tags = false
    net.sf.jasperreports.export.html.flush.output = true
    net.sf.jasperreports.awt.ignore.missing.font = false
    net.sf.jasperreports.query.executer.factory.json = net.sf.jasperreports.engine.query.JsonQueryExecuterFactory
    net.sf.jasperreports.components.barcode4j.image.producer.svg = net.sf.jasperreports.components.barcode4j.BarcodeSVGImageProducer
    net.sf.jasperreports.query.executer.factory.PLSQL = net.sf.jasperreports.engine.query.PlSqlQueryExecuterFactory
    net.sf.jasperreports.export.xls.use.timezone = false
    net.sf.jasperreports.query.executer.factory.olap4j = net.sf.jasperreports.olap.Olap4jQueryExecuterFactory
    net.sf.jasperreports.export.filter.factory.origin = net.sf.jasperreports.engine.export.JROriginExporterFilterFactory
    net.sf.jasperreports.components.sort.down.arrow.char = 
    net.sf.jasperreports.query.executer.factory.JSON = net.sf.jasperreports.engine.query.JsonQueryExecuterFactory
    net.sf.jasperreports.export.xml.replace.invalid.chars = ?
    net.sf.jasperreports.export.docx.frames.as.nested.tables = true
    net.sf.jasperreports.default.first.line.indent = 0
    net.sf.jasperreports.virtual.page.element.size = 2000
    net.sf.jasperreports.csv.record.delimiter = 
    net.sf.jasperreports.csv.field.delimiter = ,
    net.sf.jasperreports.allow.element.negative.width = false
    net.sf.jasperreports.export.xls.wrap.text = true
    net.sf.jasperreports.text.save.line.breaks = false
    net.sf.jasperreports.export.pdf.glyph.renderer.blocks.default = devanagari,bengali,telugu,tamil,gujarati,kannada,malayalam,oriya,gurmukhi,sinhala,tibetan,khmer
    net.sf.jasperreports.export.docx.flexible.row.height = false
    net.sf.jasperreports.javascript.class.compiler.optimization.level = 0
    net.sf.jasperreports.awt.check.available.printers = true
    net.sf.jasperreports.frame.border.split.type = NoBorders
    net.sf.jasperreports.web.request.parameter.resource.bundle = jr.bundle
    net.sf.jasperreports.compiler.max.java.method.size = 32768
    net.sf.jasperreports.export.xls.force.page.breaks = false
    net.sf.jasperreports.export.pdf.justified.letter.spacing = false
    net.sf.jasperreports.velocity.file.resource.loader.cache = true
    net.sf.jasperreports.web.request.parameter.resource.locale = jr.locale
    net.sf.jasperreports.crosstab.ignore.width = false
    net.sf.jasperreports.velocity.file.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
    net.sf.jasperreports.web.embed.component.metadata.in.html.output = false
    net.sf.jasperreports.components.barcode4j.image.gray = true
    net.sf.jasperreports.compiler.max.groovy.method.size = 32768
    net.sf.jasperreports.components.barcode4j.qrcode.producer.svg = net.sf.jasperreports.components.barcode4j.QRCodeSVGImageProducer
    net.sf.jasperreports.query.executer.factory.plsql = net.sf.jasperreports.engine.query.PlSqlQueryExecuterFactory
    net.sf.jasperreports.components.barcode4j.image.antiAlias = true
    net.sf.jasperreports.legacy.element.stretch.enabled = false
    net.sf.jasperreports.default.tab.stop.width = 40
    net.sf.jasperreports.default.right.indent = 0
    net.sf.jasperreports.web.servlets.viewer.header.template = net/sf/jasperreports/web/servlets/resources/viewer/HeaderTemplate.vm
    net.sf.jasperreports.export.xls.auto.fit.page.height = false
    net.sf.jasperreports.export.filter.factory.ignore = net.sf.jasperreports.engine.export.MatcherExporterFilterFactory
    net.sf.jasperreports.components.barcode4j.qrcode.producer.image = net.sf.jasperreports.components.barcode4j.QRCodeRasterizedImageProducer
    org.eclipse.jdt.core.compiler.codegen.TargetPlatform = 1.5
    net.sf.jasperreports.export.html.border.collapse = collapse
    org.eclipse.jdt.core.compiler.compliance = 1.5
    net.sf.jasperreports.query.executer.factory.XLSX = net.sf.jasperreports.engine.query.ExcelQueryExecuterFactory
    net.sf.jasperreports.components.table.interactive = true
    net.sf.jasperreports.big.decimal.minimum.precision = 16
    net.sf.jasperreports.evaluator.ignore.npe = true
    net.sf.jasperreports.export.configuration.override.report.hints = true
    net.sf.jasperreports.compiler.xml.parser.cache.schemas = true
    net.sf.jasperreports.print.transfer.viewer = net.sf.jasperreports.viewer
    net.sf.jasperreports.query.executer.factory.xlsx = net.sf.jasperreports.engine.query.ExcelQueryExecuterFactory
    net.sf.jasperreports.export.xls.ignore.cell.background = false
    net.sf.jasperreports.style.evaluation.time.enabled = false
    net.sf.jasperreports.consume.space.on.overflow = true
    net.sf.jasperreports.template.xml.parser.factory = net.sf.jasperreports.engine.xml.TemplateSaxParserFactory
    net.sf.jasperreports.export.csv.force.field.enclosure = false
    net.sf.jasperreports.javascript.class.compiler.script.max.size = 2048
    net.sf.jasperreports.web.resource.pattern.default = net/sf/jasperreports/.*
    net.sf.jasperreports.compiler.javascript = net.sf.jasperreports.compilers.JavaScriptClassCompiler
    net.sf.jasperreports.query.executer.factory.OLAP4J = net.sf.jasperreports.olap.Olap4jQueryExecuterFactory
    net.sf.jasperreports.export.pdfa.conformance = none
    net.sf.jasperreports.javascript.class.compiler.expressions.per.script = 32
    net.sf.jasperreports.velocity.runtime.log.logsystem.class = org.apache.velocity.runtime.log.CommonsLogLogChute
    net.sf.jasperreports.export.csv.write.header = false
    net.sf.jasperreports.export.flash.element.allow.script.access = sameDomain
    net.sf.jasperreports.default.spacing.after = 0
    net.sf.jasperreports.components.icon.font = Pictonic
    net.sf.jasperreports.components.filter.char = 
    net.sf.jasperreports.xml.load.unknown.entities = false
    net.sf.jasperreports.components.barcode4j.image.producer.image = net.sf.jasperreports.components.barcode4j.BarcodeRasterizedImageProducer
    net.sf.jasperreports.allow.element.overlap = true
    net.sf.jasperreports.governor.max.pages.enabled = true
    net.sf.jasperreports.band.split.type = Stretch
    net.sf.jasperreports.extensions.registry.class = net.sf.jasperreports.extensions.DefaultExtensionsRegistry
    net.sf.jasperreports.export.filter.factory.key = net.sf.jasperreports.engine.export.ElementKeyExporterFilterFactory
    net.sf.jasperreports.awt.superscript.fix.enabled = true
    net.sf.jasperreports.components.barcode4j.image.resolution = 300
    io continuo la mia ricerca ma ogni consiglio o indizio è sempre ben accetto !!!
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  6. #6
    ultime news, il jar funziona se lanciato nel seguente modo :
    codice:
    java -Xms128m -Xmx512m -cp C:\Lavoro\lib\jasperreports-6.3.0.jar;C:\Lavoro\lib\commons-logging-1.2.jar;C:\Lavoro\lib\commons-digester-2.1.jar;C:\Lavoro\lib\commons-collections-3.2.2.jar;C:\Lavoro\lib\commons-beanutils-1.9.3.jar;C:\Lavoro\lib\jdt-compiler-3.1.1.jar;C:\Lavoro\lib\iReport.jar;C:\Lavoro\lib\barbecue-1.5-beta1.jar;Etichette.jar; ETICHETTE.insOmod
    se invece ometto il percorso c:\lavoro non funziona
    codice:
    java -Xms128m -Xmx512m -cp \lib\jasperreports-6.3.0.jar;\lib\commons-logging-1.2.jar;\lib\commons-digester-2.1.jar;\lib\commons-collections-3.2.2.jar;\lib\commons-beanutils-1.9.3.jar;\lib\jdt-compiler-3.1.1.jar;\lib\iReport.jar;\lib\barbecue-1.5-beta1.jar;Etichette.jar; ETICHETTE.insOmod
    perchè? in entrambi i casi il .jar è nella cartella lavoro
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Nel primo caso stai dando un percorso (presumo) corretto, nel secondo no.

    Il backslash iniziale indica un percorso che inizia dalla root.

    \lib\jasper...

    è equivalente a

    C:\lib\jasper...

    che è sbagliato (se il primo è corretto).

    Se vuoi omettere la "directory corrente" devi dare un percorso relativo:

    lib\jasper... (nota l'assenza del backslash iniziale!)


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.