IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

ClassCircularityError et release 1.6.0_21


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut ClassCircularityError et release 1.6.0_21
    Salut à tous !

    Depuis que j'ai updaté java en passant à la release 1.6.0_21 mon code me renvois l'erreur java.lang.RuntimeException: java.lang.ClassCircularityError.

    J'ai beau prendre le problème ans tous les sens y'a quelque chose de fondamental qui apparemment m'échappe et c'est pourquoi je viens vers vous ... (au bout du rouleau )

    Description rapide : j'ai une page html+php+javascript sur laquelle je crée un menu interactif au bout duquel j'envois une requete à une base de données, et j'envoie les résultat à une applet JAVA pour me faire un ou des beaux graphiques et ce de la façon suivante (je prends des racourcis ici mais c'est pour que vous compreniez la démarche):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    for ($i=0;$i<count($parameter);$i++) {
       echo "<APPLET\n";
       echo "CODEBASE=\"./applets\"";
       echo "CODE=\"applet.init.AppletGraph\" WIDTH=100% HEIGHT=".$height."\n";
       echo "ARCHIVE=\"jcommon-1.0.16.jar, jfreechart-1.0.13.jar, jxl.jar, iText-5.0.1.jar, javacsv.jar, sAppletGraph.jar\">\n";
       echo "<PARAM NAME=parameter VALUE=\"".$parameter[$i]."\">\n";
       echo "<PARAM NAME= ....
     
       $indice=0;
       $string="";
       $select="select TO_CHAR(TS, ...
       while ($rowSelect = oci_fetch_array($reqSelect, OCI_NUM+OCI_RETURN_NULLS)) {
          $time=$rowSelect[0]; // TS
          $value=$rowSelect[1]; // PARAMETER
     
          if ($string == "") { $string=$time."%".$value; }
          else { $string=$string.'@'.$time.'%'.$value; }
          if (strlen($string) >= 50000) { 
             echo "<PARAM NAME=\"valeur".$indice."\" VALUE=\"".$string."\">\n";
             $indice++;
             $string="";
          }
       }
    }
    Ensuite viens la fameuse Applet qui me cause des soucis. Comme je n'arrive pas à me faire une idée de l'origine du problème j'espère que vous ne m'en voudrez pas de vous mettre tout le code (pas très long du tout) qui consiste en 2 classes, une avec la méthode init() de l'applet et l'autre avec des méthodes plus liées au graphique même.

    Donc maintenant mon problème n°1:
    Lorsque l'utilisateur fait une requete pour obtenir le graphique d'un seul paramètre, pas d'erreur !
    Lorsqu'il demande 2 (ou plus) paramètres là ça déconne et java m'affiche un graphique (une applet fonctionne correctement) et l'autre est la source de l'erreur suivante :

    Exception générale
    Nom: AppletGraph
    java.lang.RuntimeException: java.lang.ClassCircularityError: org/jfree/chart/ChartPanel

    Détail peut-être important : cela le fait qu'avec Windows, pas avec Linux !!


    mon problème n°2: il concerne la mémoire ou plutôt d'apparentes fuite de mémoire java. Lorsque je charge ma page web, j'arrive sur un premier menu, qui après choix m'en crée un autre ...etc, jusqu'à arriver au bouton "Créer le graphique". Si je ne recharge pas ma page web (et donc me retape tout les menus ...) et que je clic par exemple plusieurs fois consécutives sur "Créer le graphique" au fur et mesure la mémoire que consomme java (que je contrôle avec la console en pressant sur la touche "m") augmente sans arrêt jusqu'à arriver à la limite que j'avais fixée pour java et ce quelqu'elle soit, 256m, 512m ou plus.


    Voilà, j'espère avoir été suffisamment concis sans trop vous avoir saoulé !

    Merci d'avance pour votre aide et votre temps consacré à lire ce post.

    Nodule.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Pas de réponses, donc soit mon post est incompréhensible (si c'est le cas prière de me le signaler) soit que personne n'a d'idée (si c'est la cas prière là aussi de me confier la moindre petite chose qui pourrait vous passer par la tête).

    Juste petite précision au cas ...
    Mon serveur http est sous Linux (Apache 2.0) et je compile mon code JAVA avec Eclipse (export ... sous .jar) sous Linux, et ma base, Oracle Database Express Edition sous Linux aussi.
    Est-ce que ça pourrait expliquer mon problème n°1 qui n'apparait que sous Windows ?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourriez vous donner le stacktrace complet de l'exception que vous mentionnez.

    Aussi, puisque ca n'arrive que sous windows, avez vous tentez une réinstallation (on est pas a l'abris d'une installation foireuse)

    Ce genre d'erreur arrive normalement quand vous avez réussi par bidouille a compiler ce genre de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class A extends B{
    }
     
    public class B extends A{
    }

  4. #4
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    voici le stacktrace de l'exception :

    java.lang.RuntimeException: java.lang.ClassCircularityError: org/jfree/chart/ChartPanel
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassCircularityError: org/jfree/chart/ChartPanel
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.Dialog$1.run(Unknown Source)
    at java.awt.Dialog$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Unknown Source)
    at java.awt.Component.show(Unknown Source)
    at java.awt.Component.setVisible(Unknown Source)
    at java.awt.Window.setVisible(Unknown Source)
    at java.awt.Dialog.setVisible(Unknown Source)
    at sun.plugin.util.PluginSysUtil.execute(Unknown Source)
    at sun.plugin.util.PluginSysUtil.delegate(Unknown Source)
    at com.sun.deploy.util.DeploySysRun.execute(Unknown Source)
    at com.sun.deploy.util.DeploySysRun$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.deploy.util.DeploySysRun.executePrivileged(Unknown Source)
    at com.sun.deploy.ui.UIFactory.showMixedCodeDialog(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler.showMixedTrustDialog(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler.access$1000(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.checkAllowed(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1500(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler$ChildElement.checkResource(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Exception : java.lang.RuntimeException: java.lang.ClassCircularityError: org/jfree/chart/ChartPanel

    J'ai sinon bien entendu vos remarques concernant l'origine possible de cette exception. C'est d'ailleurs ce type d'exemple qui est généralement cité quand on fait une recherche sur le web concernant cette exception. Seulement, à moins que quelque chose m'échappe dans ma façon de coder, il ne me semble pas avoir eu recours à ce genre de déclaration croisées.
    Mais avec le stacktrace peut-etre quelque chose vous sautera aux yeux ... merci à vous tchize_ !

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je doute que vous soyez responsable, ca dois plutot etre une c*** dans l'installation java chez vous, sinon l'erreur serait la même quelle que soit la jvm

    Rien d'utile a mes yeux dans le stacktrace, malheureusement.

  6. #6
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Et donc quand vous parliez de refaire l'installation il s'agissait de celle de java ?
    Si oui y'a t'il des spécification ou des recommandations pour installer java sur windows ?

  7. #7
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Heuuuu encore que j'ai essayé sur 2 ordis différents, dont un avec l'OS XP et l'autre windows7 et le problème est présent dans les 2 cas ... le problème semble être apparu avec la dernier release de java 1.6.0_21. Ou alors y'a un bug dans mon code qui passait à travers les mailles du filet avec les précédentes releases ... ou bien il s'agit de problèmes spécifiques liés à cette dernière release.

  8. #8
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Donc je confirme cette ClassCircularityError est apparue avec la release 1.6.0_21 puisqu'après tests sur une même machine Windows, cette erreur n'apparait pas avec les releases 1.6.0_18 et 1.6.0_13.
    Je suis en train d'y penser mais le message d'erreur semble incriminer JFreeChart et sa classe ChartPanel, donc se pourrait-il que cette nouvelle release ne gère plus ou mal JFreeChart ou des classes de JFreeChart ?

    ESt-ce qu'un admin pourrait me copier ce message aussi (si c'est possible) dans le forum peut-etre plus approprié JFreeChart, je crois "Interfaces Graphique en JAVA > Graphisme > 2D"

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Salut,
    Pour le problème n°2, j'aurais tendance à dire que ça n'en est pas un : la machine virtuelle fait "ce qu'elle veut" avec la mémoire (dans les limites qui lui sont données) donc si ça fonctionne toujours une fois le max atteint, on peut considérer qu'il n'y a pas de problèmes.

  10. #10
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    J'essaye d'alimenter mon moulin et pour ça j'ai fait quelques tests donc voici les conclusions :

    1) mon code ne marche pas comme indiqué avec le Plug-in JAVA 1.6.0_21 et JRE 1.6.0_21
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Java Plug-in 1.6.0_21
    Utilisation de la version JRE 1.6.0_21-b07 Java HotSpot(TM) Client VM
    mais par contre marche avec le même Plug-in 1.6.0_21 et avec une version du JRE antérieur 1.6.0_18.
    ==> auriez vous donc fait des constats d'instabilité vous aussi lors du changement de version 18 à 21 ?

    2) j'ai réduit mon code JAVA à son plus strict minimum (la méthode init() et une méthode toto() jamais appelée !) de sorte à tenter d'isoler l'erreur, qui a un lien avec JFreeChart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    package applet.init;
     
    import org.jfree.chart.JFreeChart;
    import javax.swing.JApplet;
     
    public class AppletGraph extends JApplet {
     
    	private static final long serialVersionUID = 8499358800188936023L;
     
    	public JFreeChart jFreeChart;
     
    	//Init vide !!!
    	public void init() {
     
    	}
     
    	// une méthode jamais appelée !!!
    	public JFreeChart toto(){
     
    		JFreeChart chart = null;
    		return chart;
    	}
    }
    Sur cet exemple, quand je le lance suivant la description faite dans le premier post, j'obtient l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    basic: exception : java.lang.ClassCircularityError: org/jfree/chart/JFreeChart.
    java.lang.RuntimeException: java.lang.ClassCircularityError: org/jfree/chart/JFreeChart
    Par contre le même code en supprimant juste la méthode toto() ne renvoie pas d'erreur ...

    Est-il normal qu'une méthode certe compilée mais jamais appelée soit source d'erreur à l'execution ?!
    Est-ce que ça met un peu plus la puce à l'oreille à quelqu'un ?

  11. #11
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    A mon avis c'est surtout sur le bug tracker de JFreeChart que tu devrais reporter ça...

    http://sourceforge.net/tracker/?grou...94&atid=115494

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Yup, c'est un problème lié à JFreeChart. Quand à la méthode, quand ta classe est chargée, le classloader lit la signature de ses méthode. Il trouve une méthode qui retourne JFreeChart, il fait donc le chargement de JFreeChart.

  13. #13
    Membre confirmé
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Par défaut
    Merci pour vos confirmations ... je tache de vous tenir au courant si j'ai des news du bug tracker de JFreeChart

Discussions similaires

  1. regsvr32 failed en debug mais pas en release
    Par afan dans le forum DirectX
    Réponses: 1
    Dernier message: 09/06/2004, 10h32
  2. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04
  3. bloqué en mode Release
    Par matsch77 dans le forum MFC
    Réponses: 3
    Dernier message: 07/01/2004, 17h17
  4. Ma version release ne fonctionne pas
    Par totof42 dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/11/2003, 13h15
  5. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo