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):
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.
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=""; } } }
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.
Partager