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

3D Java Discussion :

Probléme application jarée et jogl.


Sujet :

3D Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut Probléme application jarée et jogl.
    Tout d'abord bonjour a vous tous, et en esperant que ce post pourra aider d'autres que moi par la suite.

    Voila mon problème :

    J'ai developpé une application necessitant Jogl assez grosse et je l'ai exportée en .jar dans le but de pouvoir la lancer en tapant une commande du type "java -jar monappli.jar". Hors bien evidemment, je dois specifier le jar jogl pour que cette dernière fonctionne. J'essaye hasardeusement la commande suivante : java -classpath /../Prog/lib/jogl.jar -jar monappli.jar. Le programme se lance ... jusqu au moment ou je fais appel a un GLEventListener voila l'erreur affichée sur la console :

    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/media/opengl/GLEventListener
    at gui.GeneralMenu.actionPerformed(GeneralMenu.java:518)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1000)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1041)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1778)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


    D'après ce que j'ai pu lire sur moults forums ... l'erreur sera du au fait que jogl.jar n'est pas trouvé. Precisions : j'ai exporté mon application en jar par l'intermédiaire d'eclipse avec les paramètres suivant .. jogl.jar ajouté en jar externe (emplacement de jogl : /../Prog/lib/, emplacement des *.so : /.../Prog/lib/).

    J'utilise la jsr231-1.0

    Est ce que je fais une erreur lors du lancement de mon jar ? si oui laquelle et comment y remedier ? si non est ce tout simplement possible de lancer une appplication jarée usitant Jogl ?

    En esperant d'avoir été aussi précis que possible. Merci pour toutes vos réponses futures.

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    si c'est un probleme du jar importé, tu peux jeté un coup d'oeil dans le manifest créé par eclipse, pour voir s'il l'a bien pris en compte, et s'il n'y a pas un probleme de path

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    Je vais peut être abusé mais un problème de PATH se traduirais comment ?

    je peut fournir ici une capture du Manifest.


    Merci pour cette prompte réponse.

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Citation Envoyé par Asaturne
    J'essaye hasardeusement la commande suivante : java -classpath /../Prog/lib/jogl.jar -jar monappli.jar. Le programme se lance ... jusqu au moment ou je fais appel a un GLEventListener
    La ligne que tu passes avec le flag -classpath... qui, d'ailleurs, est très bizarre... y'a un espace entre / et ../Prog/lib/jogl.jar? Tu es sous linux? Utilise ":" alors pour le séparateur... et pas un espace... donc, je disais, le flag -classpath n'est pas pris en compte (si je ne m'abuse) lorsque tu lances un fichier jar. Java ne considère alors que la ligne "Class-Path" du fichier Manifest. Est-ce que tu as vérifié qu'il y avait bien ce qu'il fallait à cet endroit?

    Citation Envoyé par Asaturne
    jogl.jar ajouté en jar externe (emplacement de jogl : /../Prog/lib/, emplacement des *.so : /.../Prog/lib/).
    C'est quoi ces chemins??? Y'a toujours des espaces? Et c'est quoi ces trois points?

    Est-ce que tu pourrais nous fournir l'arborescence de ton... installation, stp? Qu'on y voit plus clair...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    les ... ne signifient en fait qu'il y a une certaine arborescence avant d'atteindre les repertoires et fichiers (dsl pour l'incompréhenssion). Je vais essayer de regarder cette histoire de class-path a l'intérieur du manifest.

    voila mon manifest :

    Manifest-Version: 1.0

    Class-Path: /home0/leiris0/Prog/lib/jogl.jar

    Main-Class: gui.Main



    Mais toujours la même erreur : l appli se lance correctement jusqu a l'utilisation du GLEventListener

  6. #6
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Je confirme les infos de plegat : Java ignore -classpath quand -jar est utilisé.

    Simplifie-toi la vie et pose JOGL dans le dossier ext/ de ton JDK/JRE

  7. #7
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    En effet cela marche beaucoup mieux avec jogl dans ext et j'etais complétement idiot de ne pas le faire. En fait je pensais qu en agissant ainsi, mon appli ne pourrait pas tourner sur toutes les machines (car c'est son but en fait).Mais j'avais mal reflechis et cela fonctionnera bien evidement sur plusieurs machines sans problèmes. Merci pour vos conseils et votre aide.

  8. #8
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par Asaturne
    cela fonctionnera bien evidement sur plusieurs machines sans problèmes.
    A ceci près qu'il faudra que les machines sur lesquelles tu déploies ton programme aient également Jogl dans leur classpath...

    D'un autre côté, ça évite de distribuer Jogl avec ton prog.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  9. #9
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    Par simple curiosité... si j'avais voulu distribuer jogl avec mon appli quelle démarche aurais-je dut effectuer ? Sans doute des paramètres a rentrer dans mon manifest mais lesquels ?

  10. #10
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Comme dis précédemment... en utilisant la ligne "class-path" du fichier manifest pour indiquer où trouver la librairie.
    Et rajouter une option pour indiquer également où trouver les dll... ou les fichiers so... en fonction de l'OS...

    En gros, laisse tomber, ne distribue pas Jogl avec ton appli. Il y a une partie native, ça t'obligerais à faire plusieurs version de ton appli.
    L'utilisateur est assez intelligent pour récupérer la version de Jogl qu'il lui faut (enfin... j'espère! Parce que je ne vais pas m'amuser à faire trois versions de mon appli à moi quand elle sera prête à être disponible! )
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  11. #11
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Nul besoin de faire trois versions de l'application en distribuant tous les libs natives à la fois (un seul dossier contient les .so, .dll et .jnilib). En outre, il est généralement agréable de trouver une distribution liée à son OS (un .exe pour Windows, un .dmg pour Mac OS X, un .zip pour ceux qui veulent installer à la main, etc.).

    Notez que Java WebStart permet de distribuer JOGL en fonction de l'OS sans trop se faire chier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      <resources>
        <!-- les jar de ton appli -->
        <extension name="JOGL" href="jogl.jnlp"/>
      </resources>
    Et le fichier jogl.jnlp :

    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
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <jnlp spec="1.0+" codebase="http://www.tonsiteweb" href="jogl.jnlp">
      <information>
        <title>Java OpenGL</title>
     
        <vendor>JOGL</vendor>
        <homepage href="http://jogl.dev.java.net" />
     
        <description>OpenGL bindings for Java.</description>
     
        <offline-allowed />
      </information>
     
      <resources>
        <j2se version="1.4+" />
        <jar href="jogl.jar" />
      </resources>
     
      <resources os="Windows">
        <nativelib href="jogl-natives-win32.jar" />
      </resources>
      <resources os="Mac OS X">
        <nativelib href="jogl-natives-macosx.jar" />
      </resources>
      <resources os="Linux">
        <nativelib href="jogl-natives-linux.jar" />
      </resources>
     
      <security>
        <all-permissions />
      </security>
     
      <component-desc />
    </jnlp>

  12. #12
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    Hum je pense qd même distribuer l'appli avec le jar de jogl a coté en indiquant ou il faut l installer et les libraries natives dans un sous rep de l'application.

    Merci pour vos aimables participations.

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

Discussions similaires

  1. Problème application d'un skin à un TextBox
    Par Filippo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/02/2007, 11h06
  2. Problème Application MDI
    Par draiah dans le forum Delphi
    Réponses: 4
    Dernier message: 20/11/2006, 13h06
  3. Réponses: 6
    Dernier message: 10/07/2006, 14h46
  4. Problème application multi-tier et Oracle ?
    Par bds2006 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/06/2006, 11h58
  5. problème application avec 2 BD
    Par PAYASS59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/01/2006, 15h13

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