2010-09-02 4 views
25

Lorsque vous tentez d'exporter sur WebLogic 11g, il génère une exception NoClassDefFound. J'ai vérifié l'application WAR et jasperreports-3.7.4.jar est inclus dans le dossier WEB-INF/lib. Quelle est l'erreur?JasperReports NoClassDefFoundError exception sur net.sf.jasperreports.engine.util.JRStyledTextParser

StackTrace

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/util/JRStyledTextParser at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:181) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:76) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:86) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:56) at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:676) at

+0

Y at-il une cause à la racine? Regardez plus loin dans la trace. L'initialisation de la classe peut avoir échoué. – BalusC

+0

Existe-t-il plusieurs jars jasperreport dans l'application Web ou le chemin de classe? – JoseK

+0

@JoseK Il semble qu'un seul jar existe sur classpath. J'ai essayé de déployer ce fichier WAR sans Jasperreport.jar, mais il génère une exception pour NoClassDefFound sur les classes Jasper. –

Répondre

32

Enfin, je l'ai travail. Je détecté l'exception racine, qui a été jeté avant NoClassDefFoundError: net/sf/JasperReports/moteur/util/JRStyledTextParser:

java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 

Les classes Sun AWT sur Unix et Linux ont une dépendance à l'égard du système X Window. Lorsque vous utilisez ces classes, elles s'attendent à charger des bibliothèques client X et à pouvoir communiquer avec un serveur d'affichage X. Cela a du sens si votre client a une interface graphique; malheureusement, il est requis même si votre client utilise AWT mais n'a pas de GUI (ce qui est mon cas, générer un rapport à partir d'une application web)

La façon de contourner cela, est de définir une propriété système java.awt.headless=true au démarrage du système.

+1

Est-ce que quelqu'un a eu du mal à utiliser la solution java.awt.headless = true sur une machine différente? Il travaille pour nous sur l'un de nos déploiements, alors qu'il ne travaille pas sur un autre. Les deux déploiements utilisent la même version JVM. –

+0

A travaillé pour moi! Mon serveur est le [Weblogic 12c] (http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html). J'ai ajouté la valeur '-Djava.awt.headless = true' dans les arguments d'initialisation du serveur, exactement dans l'onglet Server Resume. –

2

parsing Exception signifie que la police ne pas avoir été reconnue. J'ai passé une journée entière à essayer de comprendre pourquoi, puis finalement j'ai résolu ce problème en utilisant le texte SansSerif. Sous Linux, seules quelques polices peuvent être analysées. Dans l'espoir a aidé, meilleures salutations

1

Nous avions problème similaire. nous l'avons résolu en utilisant le fichier jar flow jasper java. le

java.awt.headless=true 

ne fonctionne pas pour nous.

+5

Pourriez-vous s'il vous plaît partager quelques détails sur la façon dont vous avez réalisé cela? J'ai le même problème et j'ai essayé d'utiliser le java flow jar mais ça ne marche pas non plus pour moi. Y a-t-il quelque chose qui me manque? – user1066568

+0

où exactement besoin d'ajouter cette ligne? –

+0

@Elango 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é headless dans votre commande de démarrage de tomcat comme -Djava.awt.headless = true – kozla13

4

J'ai connu le même problème et nous avons résolu le problème en installant les paquets de polices Xorg ainsi que les polices TTF.

0

Vous obtenez la même erreur s'il n'y a pas assez d'espace. J'ai eu la même erreur et c'était parce qu'il y avait 0KB d'espace libre sur le disque dur du serveur.

0

J'ai eu le même problème et il a été résolu en réduisant l'espace/tmp. C'était 100% (dossier/tmp). Je l'ai réduit à 86% et j'ai redémarré le serveur et l'erreur noclassdefinition a disparu et le problème a été résolu.

0

J'ai fait face à ce problème plusieurs fois et j'ai la solution. Cette erreur vient en raison du manque d'espace mémoire sur le disque ... Vous pouvez essayer ci-dessous des choses à résoudre: (i) Faire assez d'espace dans le dossier tmp (ii) Supprimer certains fichiers inutiles sur le disque pour faire de la place.

Bonne chance..Heur .. il devrait résoudre votre problème

Questions connexes