Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Rédacteur
    Avatar de Zavonen
    Inscrit en
    novembre 2006
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Âge : 67

    Informations forums :
    Inscription : novembre 2006
    Messages : 1 767
    Points : 1 858
    Points
    1 858

    Par défaut Graphique JFreeChart dans Applet

    Bonjour à tous,
    Je travaille sous système Linux ubuntu Jaunty-9.04
    Mon EDI est Netbeans 6.5.1
    Je souhaite inclure des graphiques JFreeChart dans mes applets.
    J'ai lu la doc, cela n'a pas l'air très compliqué, et j'ai fait un premier essai:
    Voici le code:
    Code java :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    /*
     * fibonacci.java
     *
     * Created on 10 juil. 2009, 07:31:03
     */
    /**
     *
     * @author gilles
     */
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.DefaultCategoryDataset;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.util.LinkedList;
     
    public class fibonacci extends java.applet.Applet {
     
        DefaultCategoryDataset dataset;
        JFreeChart chart;
        String serie1 = "u(n+1)=u(n)+u(n-1)";
        LinkedList indicesi = new LinkedList();
        LinkedList indicess = new LinkedList();
        int curindex;
     
        private double fibonacci(int n) {
            if (n == 0) {
                return 1;
            }
            if (n == 1) {
                return 1;
            }
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
     
        /** Initializes the applet defsuites1 */
        public void init() {
            try {
                java.awt.EventQueue.invokeAndWait(new Runnable() {
     
                    public void run() {
                        initComponents();
                    }
                });
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            this.setSize(600, 400);
            dataset = new DefaultCategoryDataset();
            curindex = 1;
            for (int i = 0; i < curindex; i++) {
                indicesi.add(i);
                indicess.add("" + i);
                dataset.addValue(fibonacci((Integer) indicesi.get(i)), serie1, (String) indicess.get(i));
            }
            chart = ChartFactory.createBarChart("Visualisation suite de Fibonacci", "indice n", "u(n)", dataset, PlotOrientation.VERTICAL, true, true, false);
     
            chart.setAntiAlias(true);
     
     
     
        }
     
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            if (chart != null) {
                chart.draw((Graphics2D) g, getBounds()); //repaints the whole chart
            }
            jToolBar1.repaint();
        }
     
        /** This method is called from within the init() method to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
     
            jToolBar1 = new javax.swing.JToolBar();
            jButton1 = new javax.swing.JButton();
            jButton2 = new javax.swing.JButton();
     
            jToolBar1.setRollover(true);
     
            jButton1.setText("Rec.");
            jButton1.setFocusable(false);
            jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
            jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
            jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    jButton1MouseClicked(evt);
                }
            });
            jToolBar1.add(jButton1);
     
            jButton2.setText("Suiv.");
            jButton2.setFocusable(false);
            jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
            jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
            jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    jButton2MouseClicked(evt);
                }
            });
            jToolBar1.add(jButton2);
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
            this.setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(318, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap(278, Short.MAX_VALUE)
                    .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
            );
        }// </editor-fold>
     
        private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {                                      
            // TODO add your handling code here:
            int i = curindex;
            indicesi.add(i);
            indicess.add("" + i);
            dataset.addValue(fibonacci((Integer) indicesi.get(i)), serie1, (String) indicess.get(i));
            curindex++;
            repaint();
        }                                     
     
        private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
            // TODO add your handling code here:
            indicesi.clear();
            indicess.clear();
            dataset.clear();
            curindex = 1;
            for (int i = 0; i < curindex; i++) {
                indicesi.add(i);
                indicess.add("" + i);
                dataset.addValue(fibonacci((Integer) indicesi.get(i)), serie1, (String) indicess.get(i));
            }
            repaint();
     
        }                                     
     
        // Variables declaration - do not modify
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JToolBar jToolBar1;
        // End of variables declaration
    }
    Dans l'appletviewer de l'EDI cela marche parfaitement.
    Maintenant quand je veux lancer l'applet depuis un fichier html, en reprenant directement le code généré.
    Code html :
    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
    26
    27
    28
    <HTML>
    <HEAD>
       <TITLE>Applet HTML Page</TITLE>
    </HEAD>
    <BODY>
     
    <!--
    *** GENERATED applet HTML launcher - DO NOT EDIT IN 'BUILD' FOLDER ***
     
    If you need to modify this HTML launcher file (e.g., to add applet parameters), 
    copy it to where your applet class is found in the SRC folder. If you do this, 
    the IDE will use it when you run or debug the applet.
     
    Tip: To exclude an HTML launcher from the JAR file, use exclusion filters in 
    the Packaging page in the Project Properties dialog.
     
    For more information see the online help.
    -->
     
    <H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3>
     
    <P>
    <APPLET codebase="classes" code="fibonacci.class" width=350 height=200></APPLET>
    </P>
     
    <HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT>
    </BODY>
    </HTML>
    Dans le répertoire 'classes' il y a les 4 fichiers générés suivants:
    fibonacci.class
    fibonacci$1.class
    fibonacci$2.class
    fibonacci$3.class
    Tout cela a été généré automatiquement.
    Cela ne fonctionne plus !
    La console java me donne les erreurs suivantes:
    Java Plug-in 1.6.0_13
    Utilisation de la version JRE 1.6.0_13 Java HotSpot(TM) 64-Bit Server VM
    Répertoire d'accueil de l'utilisateur = /home/gilles
    ----------------------------------------------------
    c: effacer la fenêtre de la console
    f: finaliser les objets de la file d'attente de finalisation
    g: libérer la mémoire
    h: afficher ce message d'aide
    l: vider la liste des chargeurs de classes
    m: imprimer le relevé d'utilisation de la mémoire
    o: déclencher la consignation
    q: masquer la console
    r: recharger la configuration des politiques
    s: vider les propriétés système et déploiement
    t: vider la liste des threads
    v: vider la pile des threads
    x: effacer le cache de chargeurs de classes
    0-5: fixer le niveau de traçage à <n>
    ----------------------------------------------------


    java.lang.NoClassDefFoundError: org/jfree/data/category/CategoryDataset
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    at java.lang.Class.getConstructor0(Class.java:2699)
    at java.lang.Class.newInstance0(Class.java:326)
    at java.lang.Class.newInstance(Class.java:308)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:2838)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1380)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.ClassNotFoundException: org.jfree.data.category.CategoryDataset
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:151)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 8 more
    Caused by: java.io.FileNotFoundException: /home/gilles/NetBeansProjects/analyse_reelle/defsuites1/build/classes/org/jfree/data/category/CategoryDataset.class (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at sun.net.http://www.protocol.file.FileURLConn...ection.java:70)
    at sun.net.http://www.protocol.file.FileURLConn...ction.java:161)
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Applet2ClassLoader.java:468)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Applet2ClassLoader.java:46)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Applet2ClassLoader.java:126)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:123)
    ... 11 more
    Exception : java.lang.NoClassDefFoundError: org/jfree/data/category/CategoryDataset
    J'en conclus qu'il manque des .class ou des .jar quelque part. Cela fonctionne en développement parce que j'ai ajouté à l'EDI les librairies, les sources, les javadoc, mais pas en production.
    Quelqu'un peut-il me dire ce que je dois ajouter et où. S'il s'agit de fichiers à compiler, vous seriez aimable de me donner la manip à faire.
    Merci d'avance.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  2. #2
    Rédacteur
    Avatar de Zavonen
    Inscrit en
    novembre 2006
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Âge : 67

    Informations forums :
    Inscription : novembre 2006
    Messages : 1 767
    Points : 1 858
    Points
    1 858

    Par défaut

    Je me réponds à moi-même, je viens de trouver la solution.
    Pour tous ceux que cela peut intéresser.
    Décompacter les jar de JCommon et JFreeChart
    Mélanger les 2 contenus des répertoires /org/jfree de chaque jar dans un répertoire unique org/jfree, mettre ce répertoire à côté des classes compilées par netbeans et ça fonctionne.
    Pour une raison que j'ignore il fait les recherches là et pas ailleurs.
    Ouf !!!
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Invité de passage
    Profil pro Laurent Ory
    Inscrit en
    décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Nom : Laurent Ory

    Informations forums :
    Inscription : décembre 2009
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    Citation Envoyé par Zavonen Voir le message
    Je me réponds à moi-même, je viens de trouver la solution.
    Pour tous ceux que cela peut intéresser.
    Décompacter les jar de JCommon et JFreeChart
    Mélanger les 2 contenus des répertoires /org/jfree de chaque jar dans un répertoire unique org/jfree, mettre ce répertoire à côté des classes compilées par netbeans et ça fonctionne.
    Pour une raison que j'ignore il fait les recherches là et pas ailleurs.
    Ouf !!!

    Merci beaucoup à toi !
    Ca faisait bien 2 mois que j'étais bloqué avec le même soucis !!

    Le problème vient visiblement du chargement des .jar par l'applet, il ne considère qu'une fois chaque "path" (org/jfree/...) et donc ne charge que jcommon OU que jfreechart ...

    Enfin voilà, encore merci

  4. #4
    Invité de passage
    Inscrit en
    août 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : août 2012
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Merciiiiiiiiiii beaucoup ça fait longtemps que je cherche la solution Merciiiii

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •