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

Multimédia Java Discussion :

[JOGL] Mise en place d'un nouveau projet Maven


Sujet :

Multimédia Java

  1. #1
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut [JOGL] Mise en place d'un nouveau projet Maven
    Bonjour à tous,

    Après quelques déboires pour récupérer un projet développé en C# avec la librairie XNA en version 2005 (ça c'est pour le troll ^^), j'ai décidé de m'intéresser à son équivalent dans le monde du libre avec la librairie JOGL. Concernant mon environnement de développement, je travaille actuellement sur un Windows 7 en 64 bits, sous Eclipse mais je souhaite que mon application fonctionne à terme sur d'autres OS (Windows 8 pour commencer, et pourquoi pas par la suite sous Mac, Unix, …) d'où l'idée de basculer dans le monde du Java. J'aime aussi l'idée que j'aurai certainement beaucoup moins de problèmes pour faire évoluer mon programme d'une version de Java à l'autre, contrairement au duo C#/XNA.

    Pour le moment, j'ai commencé par suivre ce tutoriel plutôt sympa pour commencer, en l'adaptant au fait que je préfère mettre en place un projet Maven pour m'éviter de copier à chaque fois manuellement des JAR. Pour ce qui est d'importer les JAR qui vont bien avec Maven, les mecs de chez JogAmp ont plutôt bien simplifié le travail avec une page qui explique très rapidement comment utiliser Maven (https://jogamp.org/wiki/index.php/Maven).
    Il y a quelques temps, j'avais réussi à afficher la fameuse sphère rouge du tutoriel dont j'ai donné le lien ci-dessus, sauf que je n'y arrive plus car je bloque sur l'erreur suivante au lancement de mon application :
    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
    Exception in thread "main" java.lang.NoClassDefFoundError: jogamp/common/os/MachineDescriptionRuntime
    	at jogamp.nativewindow.jawt.JAWT.<clinit>(JAWT.java:22)
    	at jogamp.nativewindow.jawt.JAWTUtil.getJAWT(JAWTUtil.java:246)
    	at jogamp.nativewindow.jawt.JAWTUtil.<clinit>(JAWTUtil.java:330)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Unknown Source)
    	at javax.media.nativewindow.NativeWindowFactory$3.run(NativeWindowFactory.java:338)
    	at javax.media.nativewindow.NativeWindowFactory$3.run(NativeWindowFactory.java:334)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at javax.media.nativewindow.NativeWindowFactory.initSingleton(NativeWindowFactory.java:334)
    	at javax.media.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1690)
    	at javax.media.opengl.GLProfile.access$000(GLProfile.java:77)
    	at javax.media.opengl.GLProfile$1.run(GLProfile.java:201)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at javax.media.opengl.GLProfile.initSingleton(GLProfile.java:187)
    	at javax.media.opengl.GLProfile.getProfileMap(GLProfile.java:2246)
    	at javax.media.opengl.GLProfile.get(GLProfile.java:959)
    	at javax.media.opengl.GLProfile.getDefault(GLProfile.java:693)
    	at javax.media.opengl.GLProfile.getDefault(GLProfile.java:704)
    	at windows.MainWindow2.<init>(MainWindow2.java:28)
    	at Application.main(Application.java:14)
    Caused by: java.lang.ClassNotFoundException: jogamp.common.os.MachineDescriptionRuntime
    	at java.net.URLClassLoader$1.run(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 java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	... 20 more
    De ce que j'ai pu trouver comme info sur le net, il semble qu'il s'agisse d'un souci d'import de bibliothèque au moment de l'exécution mais impossible de trouver comment la déclarer au lancement de mon application. Je suppose qu'il faut ajouter gluegen-rt-2.3.1.jar (je travaille avec la version 2.3.1 de jogl) puisque c'est ce JAR qui contient jogamp.common.os.MachineDescriptionRuntime. J'ai essayé de regarder dans les arguments comment je pouvais explicitement la déclarer, mais je bloque là-dessus.

    Pour info, mon pom.xml ressemble à ça :
    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
        <properties>
            <jogl.version>2.3.1</jogl.version>
        </properties>
     
        <dependencies>
            <!-- Logging -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <!-- OpenGL -->
            <dependency>
                <groupId>org.jogamp.gluegen</groupId>
                <artifactId>gluegen-rt-main</artifactId>
                <version>${jogl.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jogamp.jogl</groupId>
                <artifactId>jogl-all-main</artifactId>
                <version>${jogl.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jogamp.jogl</groupId>
                <artifactId>jogl-all</artifactId>
                <version>2.2.4</version>
            </dependency>
        </dependencies>
    Ce qui est vraiment dingue, c'est qu'il ne me semble pas avoir touché à la conf de mon application et j'arrivais il y a quelques jours à afficher ma sphère rouge sans problème. Pour la lancer, sous Eclipse, je fais un clic-droit sur mon point d'entrée d'application puis Run as » Java application (c'est d'ailleurs comme ça que je faisais quand j'arrivais encore à afficher la sphère).

    Merci d'avance pour votre aide sur ce problème a priori de classpath.

  2. #2
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    Je viens me répondre à moi-même car j'ai fini par trouver la solution

    Mon problème venait du fait que je n'importais pas la bonne version de jogl-all dans mon pom. En effet, je déclarais explicitement la version 2.2.4 alors que la 2.3.1 existe sur les repositories. J'ai donc modifié mon pom.xml pour qu'il devienne :
    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
        <properties>
            <jogl.version>2.3.1</jogl.version>
        </properties>
    
        <dependencies>
            <!-- Logging -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <!-- OpenGL -->
            <dependency>
                <groupId>org.jogamp.gluegen</groupId>
                <artifactId>gluegen-rt-main</artifactId>
                <version>${jogl.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jogamp.jogl</groupId>
                <artifactId>jogl-all-main</artifactId>
                <version>${jogl.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jogamp.jogl</groupId>
                <artifactId>jogl-all</artifactId>
                <version>${jogl.version}</version>
            </dependency>
        </dependencies>
    Je me suis rendu compte de ce problème en allant dans le Java build path du projet, où je me suis rendu compte que jogl-all manquait dans les dépendances de Maven (ce qui est étrange car elle figurait pourtant dans mon pom.xml et dans mon repository local, je la retrouve bien aussi → ???). Autre modification que j'ai apportée : du côté de mes imports, j'ai remplacé les javax.media.… par du com.jogamp.opengl.…. Et ça y est, j'ai retrouvé ma fameuse sphère.

    Je vais pouvoir poursuivre les tutos JOGL et en attendant, je clos le sujet
    Merci pour votre lecture et en espérant que ce sujet en débloquera d'autres dans le même cas que moi.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2014, 13h10
  2. Mise en place d'un nouveau repository
    Par GloomCookie dans le forum Administration et Installation
    Réponses: 5
    Dernier message: 04/08/2008, 12h02
  3. Projet : Mise en place d'une solution avec XML/XSL
    Par kokogil dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/06/2008, 08h59
  4. [Continuum] Probleme mise en integration continue d'un projet maven
    Par Pandah dans le forum Intégration Continue
    Réponses: 7
    Dernier message: 21/06/2007, 15h11

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