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

Applets Java Discussion :

[débutante] [Applet] [jar exécutable]


Sujet :

Applets Java

  1. #1
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut [débutante] [Applet] [jar exécutable]
    Bonjour à tous !

    J'ai un projet sous eclipse fonctionnant avec des librairies (geotools). Ce projet est une applet que j'essaie de faire fonctionner sous EasyPHP.

    J'exporte le projet en jar exécutable, je le place dans le répertoire de mon application Web. Dans mon index.html je lui donne les chemins et paramètres nécessaires :
    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
    <p>
      <APPLET code="Viewer.class"
            width="800" height="600" hspace="10" vspace="10" 
            archive="viewer.jar,commons-collections-2.1.jar,commons-jelly-tags-velocity-20030303.205659.jar
    ,commons-jxpath-1.2.jar,commons-lang-2.0.jar,geoapi-2.0.jar,gt2-arcgrid.jar,gt2-arcsde.jar,gt2-db2.jar
    ,gt2-dir_ds.jar,gt2-epsg-access.jar,gt2-epsg-hsql.jar,gt2-epsg-wkt.jar,gt2-experiment.jar,gt2-export-wizzard.jar
    ,gt2-geomedia.jar,gt2-geotiff.jar,gt2-gml.jar,gt2-graph.jar,gt2-image.jar,gt2-indexed-shapefile.jar,gt2-legacy.jar
    ,gt2-legend.jar,gt2-main.jar,gt2-migrate.jar,gt2-mysql.jar,gt2-oracle-spatial.jar,gt2-postgis.jar,gt2-property.jar
    ,gt2-sample-data.jar,gt2-shapefile.jar,gt2-svgsupport.jar,gt2-tiger.jar,gt2-utils.jar,gt2-validation.jar,gt2-view.jar
    ,gt2-vpf.jar,gt2-wfs.jar,gt2-wms.jar,JTS-1.6.jar,opengis-legacy-0.2.jar,units-0.01.jar,vecmath-1.3.jar,
    velocity-1.3.jar,wkb4j-1.0-RC1.jar,xalan-2.5.1.jar,XDO-beta.jar">
        <PARAM name="iconPath" value="http://localhost/myapplet/icons">
        <PARAM name="codebase" value="http://localhost/myapplet/classes">
        <span class=english>Your browser is ignoring the APPLET tag.</span><span class=francais>Votre navigateur Web ignore les balises APPLET</span>
      </APPLET>
    </p>
    Mon jar exécutable (viewer.jar) et les libraries sont dans le répetoire classes/
    Ma classe Main est Viewer.class.

    Lorsque j'essaie de visualiser mon application dans un browser, la console Java me donne cette erreur :
    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
    java.lang.NoClassDefFoundError 	
            at org.geotools.renderer.j2d.RenderedLayerFactory.<init>(RenderedLayerFactory.java:105)
    	at org.geotools.renderer.j2d.StyledMapRenderer.<init>(StyledMapRenderer.java:76)
    	at org.geotools.gui.swing.StyledMapPane.createRenderer(StyledMapPane.java:91)
    	at org.geotools.gui.swing.MapPane.<init>(MapPane.java:144)
    	at org.geotools.gui.swing.StyledMapPane.<init>(StyledMapPane.java:72)
    	at Viewer.<init>(Viewer.java:113)
    	at sun.reflect.GeneratedConstructorAccessor102.newInstance(Unknown Source)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    	at java.lang.reflect.Constructor.newInstance(Unknown Source)
    	at java.lang.Class.newInstance0(Unknown Source)
    	at java.lang.Class.newInstance(Unknown Source)
    	at sun.applet.AppletPanel.createApplet(Unknown Source)
    	at sun.plugin.AppletViewer.createApplet(Unknown Source)
    	at sun.applet.AppletPanel.runLoader(Unknown Source)
    	at sun.applet.AppletPanel.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Je ne comprends pas pourquoi il ne trouve pas les classes provenant de ma librairie geotools puisque sous Eclipse tout fonctionne correctement...

    Pouvez vous m'aider ?!
    Merci !

    WwAvE

    [ Modéré par Bulbo ]
    Modification du titre
    Les Règles du Forum

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,
    Essaie de rechercher sous Eclipse la classe org.geotools.renderer.j2d.RenderedLayerFactory pour verifier si elle est bien dans un des (nombreux ) jars que tu passes a EasyPhp.

    Si elle est deja dans un des jars, peut etre ton probleme vient de Php au niveau du Classpath lors de l'invocation de l'applet ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    wow tu parles d'une librairie
    bon passons 8)
    déjà est ce que t'as éssayé d'executer une applet plus simple pour voir comment ça marche?
    sinon voici un modèle:
    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
     
    <HTML>
    	<HEAD>
    		<TITLE>Applet java</TITLE>
    	</HEAD>
    	<BODY BGCOLOR=white>
    		<H1>Applet java</H1>	
    		<HR>
    			<DIV ALIGN=center> 
    				<APPLET codebase="." CODE="mainInterface.view.MonApplet.class" NAME="myApplet" WIDTH="300" HEIGHT="100" ARCHIVE="archive1.jar,archive2.jar,archive3.jar">
     
    				</APPLET>
     
    			</DIV>
    		<HR>
    	</BODY>
    </HTML>
    d'abord il faut que la page html et tous les .jar que tu utilises soient dans le même répertoire.

    "mainInterface.view.MonApplet.class" indique ta classe principale qui se trouve dans ce cas dans le package "mainInterface.view"
    codebase="." inque que la classe principale de l'applet se trouve à partir du répertoire courant à l'intérieur du .jar.

    Je ne comprends pas pourquoi il ne trouve pas les classes provenant de ma librairie geotools puisque sous Eclipse tout fonctionne correctement...
    c'est normal car sous eclipse tu excecutes l'applet viewer qui utilise la jvm installé sur ton ordi et à laquelle t'as bien spécifié le classpath.
    sur un navigateur c'est totalement différent car il utilise sa propre jvm et donc il faut indiquer les librairies que tu utilises dans le code...
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  4. #4
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut
    Oui j'ai essayé de faire une Applet toute simple et celà à fonctionner.
    J'ai effectué des petits changements : je place viewer.jar au même niveau que mon index.html donc et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <APPLET codebase="." code="Viewer.class"
            width="800" height="600" hspace="10" vspace="10" 
            archive="viewer.jar">
        <PARAM name="iconPath" value="http://localhost/myapplet/icons">
        <span class=english>Your browser is ignoring the APPLET tag.</span><span class=francais>Votre navigateur Web ignore les balises APPLET</span>
      </APPLET>
    Je ne référence plus tous les jar dans index.html étant donné qu'ils sont dans mon jar exécutable...
     
    Je n'ai plus la même erreur :
    java.lang.NoClassDefFoundError: org/geotools/gui/swing/event/ZoomChangeListener
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at sun.applet.AppletClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.applet.AppletClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.applet.AppletClassLoader.loadCode(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

  5. #5
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    ben là c'est normal il n'arrive pas à trouver la librairie "geotools" dans "viewer.jar" il faut lui indiquer les autres .jar (que tu mets dans le même rep)mais en plus il faut les mettre dans le classpath.
    tu écris un code du genre:
    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
    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
     
            // Reset the "sys_paths" field of the ClassLoader to null.
            Class clazz = ClassLoader.class;
            Field field = null;
            try {
                field = clazz.getDeclaredField("sys_paths");
            } catch (SecurityException e1) {
                e1.printStackTrace();
                // TODO print error message
            }
        	catch (NoSuchFieldException e2) {
        	    e2.printStackTrace();
        	    // TODO print error message
        	}
            boolean accessible = field.isAccessible();
            if (!accessible)
                field.setAccessible(true);
            Object original = null;
            try {
                original = field.get(clazz);
            } catch (IllegalArgumentException e1) {
                e1.printStackTrace();
                // TODO print error message
            }
            catch (IllegalAccessException e2) {
                e2.printStackTrace();
                // TODO print error message
            }
     
            try {
                /* 
                 * Reset it to null so that whenever "System.loadLibrary" is called,
                 *it will be reconstructed with the changed value.
                 */
                field.set(clazz, null);
                // Change the value and load the library.
                System.setProperty("java.library.path", srcPath);  //srcPath est le chemin absolu des tes librairies
                System.loadLibrary("lib1");
                /*
     
                 ici tu lui indiques toutes les librairies que tu utilises
     
                */
                System.loadLibrary("libn");
            } catch (IllegalArgumentException e1) {
                e1.printStackTrace();
                //          TODO print error message
            } catch (IllegalAccessException e2) {
                e2.printStackTrace();
                //          TODO print error message
            }catch (SecurityException e3) {
                e3.printStackTrace();
                //          TODO print error message
            } catch (NullPointerException e4) {
                e4.printStackTrace();
                //          TODO print error message
            } finally {
                // Revert back the changes.
                try {
                    field.set(clazz, original);
                } catch (IllegalArgumentException e1) {
                    e1.printStackTrace();
                    //              TODO print error message
                } catch (IllegalAccessException e2) {
                    e2.printStackTrace();
                    //              TODO print error message
                }
     
                field.setAccessible(accessible);
            }
    sinon pourquoi il y a autant de .jar?
    est ce que t'as des dll avec?
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  6. #6
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut
    Ce que je n'arrive pas à comprendre c'est pourquoi je dois remettre les jars alors qu'ils se trouvent déjà dans viewer.jar ?
    Bon là ça fonctionne mais je n'ai pas ajouter ton code. Merci quand même !

  7. #7
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par wwave
    Ce que je n'arrive pas à comprendre c'est pourquoi je dois remettre les jars alors qu'ils se trouvent déjà dans viewer.jar ?
    Bon là ça fonctionne mais je n'ai pas ajouter ton code. Merci quand même !
    là tu te trompes complètement il ne faut pas mettre des .jar dans un .jar t'imagines la complexité du truc? imagine un truc récursif avec ça
    non ça va pas? c'est beaucoup plus simple de dire à la jvm "voici mes .jar à toi d'aller chercher dedans"
    j'espere que j'ai été clair
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  8. #8
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut
    A nouveau des petits problèmes...
    Alors j'ai enlevé mes jar que contenait mon viewer.jar.
    J'utilise maintenant dans mon code la classe org.jdom.Document mais l'Applet ne se lance pas, voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    java.lang.NoClassDefFoundError: org/jdom/Document
    	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.applet.AppletPanel.createApplet(Unknown Source)
    	at sun.plugin.AppletViewer.createApplet(Unknown Source)
    	at sun.applet.AppletPanel.runLoader(Unknown Source)
    	at sun.applet.AppletPanel.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Donc là il est bien "rentré" dans ma Main classe mais ne trouve pas la classe Document alors que je n'ai pas ajouté de librairie dans Eclipse pour que celà fonctionne...

    Merci de votre aide !

  9. #9
    Membre habitué Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Points : 133
    Points
    133
    Par défaut
    et le jar correspondant à cette librairie se trouve ou?
    "Ce qui ne nous tue pas nous rend plus fort"
    Nietzsche

  10. #10
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut
    ok j'avais oublié de mettre le JAR... désolée

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

Discussions similaires

  1. [Débutant] Jar Exécutable
    Par Claude URBAN dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 02/07/2007, 14h47
  2. [Débutant] Ajout JAR externe : pb exécution
    Par arthix dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 15/01/2007, 22h35
  3. Réponses: 3
    Dernier message: 24/11/2006, 11h12
  4. [Débutant][Applet] Communication avec Servlet - IO Exception
    Par gandalf_le_blanc dans le forum Applets
    Réponses: 35
    Dernier message: 16/04/2004, 13h29
  5. [débutant]pas d'exécution
    Par Chance666 dans le forum MFC
    Réponses: 5
    Dernier message: 15/01/2004, 11h32

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