web-dev-qa-db-fra.com

Impossible d'initialiser la classe net.sf.jasperreports.engine.util.JRStyledTextParser

J'essaie d'afficher mes rapports sur le navigateur, mais j'obtiens toujours l'erreur suivante:

enter image description here

la chose étrange à ce sujet est que cela ne se produit que lorsque je tente de générer les rapports à partir de la version installée sur le serveur, mais pas lorsque je le fais localement à partir de mon ordinateur. 

Avez-vous une idée pourquoi cela se passe?

16
eddy

Cela semble être un problème de mode sans tête. Vous devez définir la propriété Java.awt.headless sur true. Cela peut être fait en utilisant:

static {
    System.setProperty("Java.awt.headless", "true");
}

Ou, en définissant la propriété sans tête de votre commande de démarrage Tomcat sur -Djava.awt.headless=true

En outre, vous pouvez en savoir plus sur les raisons pour lesquelles cela est nécessaire, sur le mode sans tête ici

7
Master.Aurora

Cela peut également être dû à un répertoire "temporaire" Java manquant/inaccessible. Dans Font.Java, les fichiers temporaires sont en cours de création:

Files.createTempFile("+~JF", ".tmp").toFile();

Sur un système, le répertoire "temp" était manquant dans le dossier Tomcat mais Java était configuré pour l'utiliser:

-Djava.io.tmpdir=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\temp

BTW. la première fois, après le redémarrage de Tomcat, le service lançait une exception IOException, mais JasperReports a mis quelque chose en mémoire cache et, lors des appels suivants, la trace de la pile était exactement celle indiquée ici.

7
Stepan

Il manque un fichier jars dans le problème du chemin d'accès aux classes.

J'ai eu ce problème et constaté qu'en ajoutant les fichiers jar manquants au chemin de classe, le problème était résolu.

D'après l'article ci-dessous Article Java.dzone.com J'ai constaté que les fichiers jar nécessaires sont ... Les numéros de version ont changé, mais avec ces bibliothèques, j'ai réussi à le faire fonctionner.

  • jasperreports-2.0.4.jar
  • commons-digester-1.7.jar
  • commons-collections-2.1.jar (commons-collections.jar)
  • commons-logging-1.0.2.jar
  • commons-beanutils.jar 
  • iText-2.0.7.jar (utilisé dans l'exportation PDF)
5
Mark Ellul

Pour ceux qui rencontrent encore ce problème: sur Ubuntu Server 12.04 avec OpenJDK JRE sans tête, il a simplement été résolu par

apt-get install ttf-dejavu-extra
5
zwets

Pour résoudre le problème, procédez comme suit:

  1. Passage de Open JDK à Sun JDK
  2. Polices MS Core installées
  3. Bibliothèque de polices JasperReport intégrée avec l'application
4
Isnah

cela peut être des problèmes de mémoire, redémarrez le serveur.

4
fernando

J'ai eu cette erreur lors du déploiement de l'application springboot (y compris les rapports jasper) dans un conteneur Docker. Le problème était lié à openjdk: 8-jdk-Alpine que j'ai utilisé pour créer l'environnement d'un conteneur Docker. Cela a un bug dans le support des polices. Par conséquent, je suis passé à openjdk: 8-jre (ou les versions OpenJDK 7 aideront également) et cela a fonctionné pour moi. J'ai passé des jours à résoudre ce problème.

3
Isuru Nuwanthilaka

Un peu tard, mais voici pourquoi nous avons eu ce problème ... Nous avons récemment commencé à développer avec IntelliJ au lieu d’Eclipse. Nous avons simplement oublié de faire fonctionner IntelliJ en tant qu'administrateur ... Cela faisait déjà longtemps que nous travaillions avec Eclipse, mais nous n'y avions simplement pas pensé avec IntelliJ . un dossier n'a pas été trouvé car les droits de lecture/écriture sur le lecteur c étaient insuffisants.

1
Valentin Grégoire

Dans mon cas, le problème concernait le jdk8 que j’utilisais pour créer une image de menu fixe, mais après quelques recherches, je suis passé à jre. Cela a corrigé mon bug. Je pense que vous pouvez essayer n'importe quelle image plutôt que d'utiliser jdk8.

0
Isuru Nuwanthilaka

J'ai cherché plusieurs heures pour trouver le même problème, et ma solution ne figure dans aucune des solutions mentionnées.

En raison d'une mauvaise mise à jour de la version de jasper reports, j'avais plusieurs versions du fichier jar de jasperreports sur mon chemin d'accès aux classes. Assurez-vous de n’avoir qu’un seul fichier jasperreports jar ...

0
W. Goeman

Dans notre cas, il a été utile de supprimer le serveur temporaire (en s'assurant ainsi qu'il n'y a pas de duplicata de jar) et de redémarrer le serveur . Astuce: essayez ceci si l'erreur commence à se produire après une nouvelle version (mais a fonctionné avant et rien n'a changé dans le communiqué)

0
Josef Bodnar

J'ai rencontré le même problème sur ma machine de développement. En gros, cela est dû à un problème de serveur d'applications ( Apache Tomcat )

En gros, j'ai accidentellement supprimé le dossier " temp " à la racine du serveur. Donc, jasper ne peut pas compiler le rapport et procéder à la génération du rapport. 

0
Chinthaka Dinadasa

Vous avez la même erreur - apparemment, JRStyledTextParser utilise la dépendance de xml-apis En ajoutant xml-apis, je l'ai corrigé

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>
0
Denys

Dans mon cas, j’utilisais les polices Arial pour cette application, j’ai configuré les polices Arial dans irfonts.xml

<fontFamily name = "Arial">
<normal> <! [CDATA [fonts/arial.ttf]]> </ normal>
<gras> <! [CDATA [fonts/arialbd.ttf]]>
</ bold>
<italic> <! [CDATA [fonts/ariali.ttf]]>
</ italic>
<boldItalic> <! [CDATA [fonts/arialbi.ttf]]>
</ boldItalic>
<pdfEmbedded> <! [CDATA [true]]>
</ pdfEmbedded> </ fontFamily>
mais cela devrait être comme: 
<fontFamily name = "Arial">
<normal> <! [CDATA [fonts/arial.ttf]]> <
/ normal>
<bold> <! [CDATA [fonts/arialbd.ttf]]> </ bold>
<italic> <! [CDATA [fonts/ariali.ttf]]> </ italic>
<boldItalic> <!
[CDATA [fonts/arialbi.ttf]]> </ boldItalic>
<pdfEmbedded> <!
[CDATA [true]]> </ pdfEmbedded>
</ fontFamily>
Il y avait donc un espace avant la balise de fin de chaque balise dans le fichier de configuration ci-dessus.
je l'ai corrigé en supprimant l'espace entre eux.

0
user2870979

Cela pourrait aider, j'avais la même erreur et toutes les autres solutions ne fonctionnaient pas.

Je l'ai corrigé en mettant à jour Java8.

0
plrenaudin