l’attributo cvc-complex-type.3.2.2 ‘uuid’ non può apparire nell’elemento ‘jasperreport’

Scaricato iReport-4.6.0 per Linux e quando si crea un nuovo report tramite il menu File-> Nuovo …, il nuovo report non viene mostrato nell’anteprima, ma il messaggio di errore cvc-complex-type.3.2.2 attribute 'uuid' is not allowed to appear in element 'jasperreport' .

Lo stesso messaggio di errore si verifica anche quando si sceglie la compatibilità 4.5.0 nelle opzioni. Lo stesso messaggio di errore si verifica anche quando si apre un file di report prodotto da altri utenti di iReport-4.6.0 (Windows).

I file di report hanno il loro schema su http://jasperreports.sourceforge.net/xsd/jasperreport.xsd , ma questo file di schema non menziona alcun uuid .

Quale potrebbe essere il problema?

Ho trovato una risposta:

Ho aperto il file JRXML con notepad ++ e ho fatto un “Search and Replace” di uuid="\w*-\w*-\w*-\w*-\w*" , e selezionato REGULAR EXPRESSION, con stringa vuota poi tutto le occorrenze di questo tag sbagliato sono state rimosse.

Ha funzionato per me

In iReport Designer, nella finestra delle opzioni puoi cambiare la modalità di compatibilità con la versione che preferisci. Per me, se metto la compatibilità a jasperreport 3.5.1, quando salvi di nuovo il rapporto, vengono rimossi tutti gli uuid.

Saluti

Apri il report in notpad ++ e rimuovi solo uuid e il suo numero .. Dopo la compilazione corretta e la generazione del report …. Ho lo stesso problema e ho risolto in questo modo ..

Non utilizzo Linux. Per creare report, utilizzare iReport Designer-xx. Aggiungi la stessa versione jasperreport (jasperreport-XX) jar nel tuo progetto.

Ho appena suggerito al mio collega che si imbatte anche nel problema:

 sed -i 's/ uuid="[^"]*"//g' $(find * -name \*.jrxml) 

Di solito non uso sed (1) -i ma è su GNU / Linux quindi non è stato un problema qui. Il modo più professionale di risolvere Unix è questo:

 find * -name \*.jrxml -print0 | while IFS= read -d '' -r file; do ed -s "$file" <<-'EOF' 1,$g/ uuid="[^"]*"/s///g w q EOF done 

(Questi quattro spazi sono tabs, altrimenti non funzionerà, e hai bisogno di mksh (1) o di un'altra shell in grado di leggere input separati da NUL).

Puoi anche usare Perl:

 find * -name \*.jrxml -print0 | xargs -0 perl -pi -e 's/ uuid="[^"]*"//g' 

O qualcosa del genere, comunque, a seconda delle tue esigenze, dei tuoi xarg (1) , ecc. 😉

Questo problema si è verificato nel mio caso a causa di voci di percorso class duplicate, in particolare voci di versioni precedenti di jasperreports-core-renderer.jar e jasperreports-extensions.jar (in Opzioni -> Percorso di class).

Queste voci duplicate apparivano dopo aver importato le impostazioni durante un aggiornamento di iReport. Apparentemente ciò è dovuto a un bug in iReport dovuto al fatto che le vecchie versioni non vengono rimosse dal classpath.

Quindi, evita l’importazione di impostazioni dalle versioni precedenti o rimuovi manualmente i file .jars obsoleti.

Se stai usando ireport 4.6 o versioni successive, il modo migliore per risolvere il problema con uuid è usare lo stesso ireport 4.6 o successivo, dato che l’attributo uuid è stato introdotto di recente dalla versione 4.6. altrimenti Se rimuovi manualmente uuid dal file jrxml, l’uuid verrà nuovamente inserito nei tag corrispondenti nella successiva compilation …

Ho una buona soluzione facile.

Sto supportando i rapporti su Jasper Server 4.5, con Jasper Studio 5.5

  1. In Jasper Studio, elimina il riferimento al server se ce n’è uno.
  2. Ricrea la connessione. Quando crei la connessione al server, vai su “Impostazioni avanzate> Versione libreria server Jasper” e seleziona la versione del tuo server dall’elenco.
  3. Apri il tuo rapporto, controlla che i tag uuid siano stati rimossi, Distribuisci