# cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'.



## rwolf (10. Jul 2012)

hi all,

ich habe einen simplen report ohne Parameter mit iReport erstellt,
Preview einwandfrei.

Aus einer früher erstellten JavaSE-Anwendung habe ich mir die
erforderlichen Module und Libs kopiert und gemeint, das müsse
ja nun easy laufen..weit gefehlt !

Hier die Codeblöcke mit den Aufrufen :

```
case BTN_DRUCKEN :
            {
                Hashtable params = new Hashtable();
                params.clear();
                ts_print_sw.prepare_print(menu_code,params);
                break;
            }
```


```
public static void prepare_print(int menu_code, Hashtable params)
    {
        //- Druckvorbereitung --------------------------
        String reportsource = "";
        String rpt_path = mps.REPORT_PATH + "/";
        //System.out.println("ts_print_switch prepare_print menucode : "+menu_code);
        switch(menu_code)
        {
            case 201 :
            {
                //- Bearbeiter drucken
                reportsource = rpt_path + db_ref.rptnames[db_ref.RPT_403_1_BEARBEITER];
                break;
            }


            case 202 :
            {
                //- Artikel -> Artikelmeth drucken
                //System.out.println("EAL Mod2 Drucke Artikelident mit Filter auf QAMATCH: " +params.toString());
                //reportsource = rpt_path + db_ref.rptnames[db_ref.RPT_202_0_ARTSPEZ];
                break;
            }

            case 203 :                              //- Methoden -------------------------------
            {
                //reportsource = "reports/rpt_mss_methoden_DE.jrxml";
                //reportsource = rpt_path + db_ref.rptnames[db_ref.RPT_203_0_METHODEN];
                break;
            }

        }
        System.out.println("Drucke Report von App "+menu_code+" Pfad : " + reportsource);
        iReportManager.handle_ipeport_m(reportsource,params);
    }
    
}
```


```
/*------------------------------------------
* @file		:	iReportManager.java;
* @author/user	:	W.W.Fietz TechnoSoft Hofbieber
* @comment	:	Interfacecode zu Jasper-Reports/iReport
* @since	:	10.07.2012
* @comment	:       mit Netbeans 7.0.1 (SUN) entwickelt
*******************************************/

package kister_basetables;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.*;
import java.util.*;
import java.lang.*;

import java.sql.*;

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JasperPrintManager;

import org.jfree.chart.JFreeChart.*;


public class iReportManager extends javax.swing.JFrame
{
    private static my_progshell1 mps;
    private static dbiface dbif;
    //private static my_pc_utils_I mu1;
    private String fName = "";

    /** Creates new form iReportManager */
    public iReportManager(String args[]) {
        initComponents();
                jButton1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
                            iRpt_frame_schliessen();
                        }
                });
        String fileName = args[0];
        handle_ipeport_m (fileName,null);

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 294, Short.MAX_VALUE)
        );

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        jButton1.setText(org.openide.util.NbBundle.getMessage(iReportManager.class, "iReportManager.jButton1.text")); // NOI18N
        getContentPane().add(jButton1, java.awt.BorderLayout.PAGE_START);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
    * @param args the command line arguments
    */
    private void iRpt_frame_schliessen()
    {
        dispose();
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration//GEN-END:variables
    public static void handle_ipeport_m (String fileName, Hashtable params)
    {

        if(fileName.isEmpty())
            fileName = "C:/Java_projekte/rpt_moonII_bearbeiter_DE.jrxml";

        String endung = ".jrxml";
        String pureName = fileName.substring(0, fileName.indexOf(endung));

        JasperReport jasperReport;

        String repName = pureName+".jasper";
        System.out.println("iReptManager Datei : "+fileName+" Datei : "+pureName+" RepName : "+repName);
        File f_app = new File(repName);
        try
        {
            if(params instanceof Hashtable)
                System.out.println("iReptManager Datei : "+fileName+" Parameter : " +params.toString());
            else
                System.out.println("uebergebener Reportname : "+ fileName);
            FileReader fr = new FileReader(fileName);

            Connection con = dbif.get_gen_con();

            JasperDesign jasperDesign = JRXmlLoader.load(fileName);

            jasperReport = JasperCompileManager.compileReport(jasperDesign);

            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, con);

            if(mps.g_print_preview)
                JasperViewer.viewReport(jasperPrint,false);
            else
                JasperPrintManager.printReport(jasperPrint, mps.g_printer_choice);

         }
         catch (java.io.FileNotFoundException fnf)
         {
            System.out.println("Report-Datei " + fileName + " konnte nicht gefunden werden !");
            mps.msgbox("EAL ReportManager Report nicht gefunden : "+fileName);
         }
         catch(Exception e)
         {
            e.printStackTrace();
         }

    }

}
```

*und hier der trace:*
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
log4j:WARN Please initialize the log4j system properly.
net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'.
	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:245)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:228)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:216)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:170)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:154)
	at kister_basetables.iReportManager.handle_ipeport_m(iReportManager.java:135)
	at kister_basetables.ts_print_switch.prepare_print(ts_print_switch.java:64)
	at kister_basetables.ts_basetable_managerII.mt_btn_actions(ts_basetable_managerII.java:281)
	at kister_basetables.ts_basetable_managerII.access$000(ts_basetable_managerII.java:28)
	at kister_basetables.ts_basetable_managerII$4.actionPerformed(ts_basetable_managerII.java:219)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'.
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:417)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3182)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(XMLSchemaValidator.java:2659)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2066)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3103)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at org.apache.commons.digester.Digester.parse(Digester.java:1647)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:241)
	... 34 more

die ersten beiden Warnings haben beim "alten" Programm kein Problem bereitet, Reports laufen dort ok !
aber vielleicht weiß auch jemand, wie ich die weg kriege bzw. was da wie initialisiert werden soll..

im iReport-Tool seh ich nix von 'uuid'..

danke schon mal im vorraus !
mfG
wolf


----------



## rwolf (10. Jul 2012)

wenn ich in das jrxml-file schaue,
sehe ich im kopf und bei jedem Ausgabefeld 'uuid=..hexcode..'
wenn ich das manuell rausschmeiße, ist die fehlermeldung weg,
aber das kann ja wohl nicht sein 

irgendein property, wo ich das beeinflussen kann ?
oder ein bug bei meinem iReport 4.6.0 (auf Win7 64bit) ?

die hilfe von iReport kann man dazu vergessen...


----------



## nillehammer (10. Jul 2012)

> ```
> log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
> log4j:WARN Please initialize the log4j system properly.
> ```
> ...


In der log4j.properties definierst Du verschiedene Appender. Weiterhin definierst Du, für welche Klassen/Packages log4j welche Appenders nehmen soll. Für 
	
	
	
	





```
net.sf.jasperreports.engine.xml.JRXmlDigesterFactory
```
 hat log4j keinen Appender gefunden. Konfigurier entweder einen speziellen oder konfiguriere einen sog. root-Logger.


> ```
> net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'.
> ```


Es gibt offensichtlich ein XML-Schema oder eine DTD für jrxml-Dateien. Diese erlauben im Element jasperReport kein Attribut uuid. Sowas geht also nicht:
[XML]
<jasperReport uuid="...">
[/XML]
Warum das früher ging? Vielleicht hat Dein alter Parser nicht validiert.
[EDIT]
Habe nochmal nach der Schema-Referenz gesucht. Hier findest Du es übersichtlich aufbereitet, was erlaubt ist: JasperReports 4.5.1 - Schema Reference
[/EDIT]


----------



## rwolf (10. Jul 2012)

also, das Problem kommt nur mit der Version 1.6.0 von iReport;
vorerst konnte ich das uuid-Problem mit Reportdesign in der Version 1.5.0 umgehen;

letztendlich muß wohl sowohl JasperReport in der neuesten Version UND
das iReport 1.6.0 (ist bereits die neueste Version ) zusammenspielen...

na dann..


----------



## Beo (22. Aug 2012)

Hallo,

hatte das selbe Problem mit den uuids. Nach der installation der neuen iReport version haben ich die alten Settings importiert und dabei wurden auch die classpaths übernommen. Daher wurden die alten 4.1.1. jar Dateien verwendet.

Also um das Problem zu beheben:

1. Extas / Optionen / Classpath => alte raus und aktuellen Pfad rein.
2. Extas / Optionen / JasperReports Properties =>* net.sf.jasperreports.compiler.classpath* anpassen

Hoffe geholfen zu haben,

mfg, Beo


----------

