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

Graphisme Java Discussion :

[erreur] CANVAS CRASHED


Sujet :

Graphisme Java

  1. #1
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut [erreur] CANVAS CRASHED
    bonjour,
    lors de l'execution de mon programme j'ai l'erreur suivante:
    CANVAS CRASHED!!!
    CANVAS CRASHED!!!
    CANVAS CRASHED!!!
    CANVAS CRASHED!!!
    CANVAS CRASHED!!!
    CANVAS CRASHED!!!
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at jGMSHPack.jGMSHPane.Container3DMouseMoved(jGMSHPane.java:447)
    at jGMSHPack.jGMSHPane.access$300(jGMSHPane.java:27)
    at jGMSHPack.jGMSHPane$3.mouseMoved(jGMSHPane.java:185)
    at java.awt.Component.processMouseMotionEvent(Component.java:6145)
    at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3283)
    at com.sun.j3d.exp.swing.JCanvas3D.processMouseMotionEvent(JCanvas3D.java:498)
    at java.awt.Component.processEvent(Component.java:5869)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4472)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4302)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3999)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)

    [...]
    ça n'est apparu qu'apres ajout de ces lignes:
    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
        private void SelectButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
            //Booleans:
            SelectBo=true;
            RotateBo=false;
            ZoomBo=false;
            SlideBo=false;
            //Cursor:
            setCursor(SelectCursor);
    }                                            
     
        private void ZoomButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
            //Booleans:
            SelectBo=false;
            RotateBo=false;
            ZoomBo=true;
            SlideBo=false;
            //Cursor:
            setCursor(ZoomCursor);        
        }                                          
     
        private void RotateButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
            //Booleans:
            SelectBo=false;
            RotateBo=true;
            ZoomBo=false;
            SlideBo=false;
            //Cursor:
            setCursor(RotateCursor);        
        }                                            
     
        private void SlideButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
            //Booleans:
            SelectBo=false;
            RotateBo=false;
            ZoomBo=false;
            SlideBo=true;
            //Cursor:
            setCursor(SlideCursor);        
        }  
    [...]
            SelectIc=(new javax.swing.ImageIcon(getClass().getResource("/image/select.PNG"))).getImage();
            RotateIc=(new javax.swing.ImageIcon(getClass().getResource("/image/rotate.PNG"))).getImage();
            ZoomIc=(new javax.swing.ImageIcon(getClass().getResource("/image/zoom.PNG"))).getImage();
            SlideIc=(new javax.swing.ImageIcon(getClass().getResource("/image/slide.PNG"))).getImage();
     
            Toolkit tk = Toolkit.getDefaultToolkit();
            SelectCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
            RotateCursor = tk.createCustomCursor(RotateIc, new Point(25, 25), "");
            ZoomCursor = tk.createCustomCursor(ZoomIc, new Point(25, 25), "");
            SlideCursor = tk.createCustomCursor(SlideIc, new Point(25, 25), "");

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 109
    Par défaut
    *soupir*

    je ne sais pas quel IDE tu utilises mais je te conseil vivement eclipse ou netbeans, ou n'importe lequel qui te renvois sur la ligne de ton erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    signifi que tu as une variable a null, ce qui fait planter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at jGMSHPack.jGMSHPane.Container3DMouseMoved(jGMSHPane.java:447)
    signifi que l'erreur c'est produit ligne 447 dans la classe jGMSHPane.

    les erreurs java sont parmis les plus facile a comprendre, je te conseil d'essayer de prendre un dico et d'essayer de les traduire quand tu tombes dessus.

  3. #3
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    j'utilise NetBeans.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CANVAS CRASHED!!!
    CANVAS CRASHED!!!
    s'affiche dès le debut de l'execution.
    le reste s'affiche a chaque fois que je deplace la souris.
    en fait, c'etait du à ceci:
    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
        private void Container3DMouseMoved(java.awt.event.MouseEvent evt) {                                       
            /*if(SelectBo){
                if(ev.getButton() == MouseEvent.BUTTON1){
                    //Slide
                    
                }
                else if(ev.getButton() == MouseEvent.BUTTON2){
                    //Rotate
                    
                }
                else if(ev.getButton() == (MouseEvent.BUTTON2 & MouseEvent.BUTTON2)){
                    //Zoom
                    
                }
            }
            else if(ZoomBo){            
                if(ev.getButton() == MouseEvent.BUTTON1){
                    //Zoom
                    
                }
            }
            else if(RotateBo){            
                if(ev.getButton() == MouseEvent.BUTTON1){
                    //Rotate
                    
                }
            }
            else if(SlideBo){            
                if(ev.getButton() == MouseEvent.BUTTON1){
                    //Slide
                    
                }
            }*/
        }
    si je ne me trompe pas c'est parceque les mouseevents ne sont pas encore implementés. en mettant le tout en commentaitre (en attendant que j'implemente les actions), il n'est resté que ces deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CANVAS CRASHED!!!
    CANVAS CRASHED!!!
    Je precise que j'ai utilisé un jCanvas3D.
    j'ai googlé un peu, et je suis tombésur la classe jCanvas3D.java dont une partie est:
    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
    810:               synchronized void waitForSwap() {
    811:                    int counter = MAX_WAIT_LOOPS;
    812:                    while (false == imageReadyBis) {
    813:                        try {
    814:                            waitingForSwap = true;
    815:                            wait(MAX_WAIT_TIME);
    816:                            waitingForSwap = false;
    817:
    818:                            if (!imageReadyBis && --counter <= 0) {
    819:                                //if i've waited too long for the canvas to be there, let us declare it crashed.
    820:                                System.err.println("CANVAS CRASHED!!!");
    821:                                canvasCrashed = true;
    822:                                return;
    823:                            }
    824:                        } catch (InterruptedException ex) {
    825:                            System.err.println(ex);
    826:                        }
    827:                    }
    828:                }
    et c'est bien ce message que j'obtiens.
    si j'ai bien compris c'est du au fait que la construction du jCanvas dure trop longtemps?
    mais comment y remedier alors?
    merci

    //if i've waited too long for the canvas to be there, let us declare it crashed.
    http://www.java2s.com/Open-Source/Ja...vas3D.java.htm

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 109
    Par défaut
    quand tu es dans netbeans il te suffit de cliquer sur la premiere ligne de l'erreur pour qu'il te renvoit la ou elle a eu lieu.


    Je me demande pourquoi tu pars sur du code assez compliqué.
    tu ne pourrais pas commencer avec les tutorial java3D ?

    officiel java3D :
    http://java.sun.com/developer/onlineTraining/java3d/

    et notre cher amis peut en fournir de plus simple :
    tutorial java3D


    Quand il s'agit de faire de la 3D les composants AWT sont plus rapide (et plus fiable), on peut faire une exeption et melanger swing et awt. tu auras peut etre moins d'erreur par la suite.

  5. #5
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    quand tu es dans netbeans il te suffit de cliquer sur la premiere ligne de l'erreur pour qu'il te renvoit la ou elle a eu lieu.
    Je sais, mais celle là, justement, ne renvois nulle part. elle n'est pas cliquable.
    Je me demande pourquoi tu pars sur du code assez compliqué.
    tu ne pourrais pas commencer avec les tutorial java3D ?
    le fait est que je ne sais pas encore si je vais utiliser Java3D ou JOG,. la question que j'ai posé à ce sujet etant restée en suspend. Tu remarqueras, que j'ai aussi posé des questions à propos de GLJPanel.
    disons, que pour l'instant je suis entrain d'ecrire deux codes en paralleles, l'un pour un jCanvas3D, l'autre pour un un GLJPanel, sans vraiment entrer dans la 3D, en attendant un eclaircissement sur ce qui me conviendrait le mieux entre les deux.

  6. #6
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 109
    Par défaut
    j'ai vu ton message sur le GLJPanel (j'y ai meme repondu).

    il y a une difference importante entre JOGL et java3D.

    JOGL c'est du brut de pomme si on peut dire, une interface java pour faire de l'openGL.

    Java3D est un scenographe, c'est une forme d'environnement pour faire de la 3D.

    j'ai fait un tour dans le domaine l'an dernier, LWJGL, JOGL, Java3D, Xidth3D, JavaMonkeyEngine, aviatrix et quelques autres. il y a une liste dans les articles sur les scenographes.

    personnellement j'ai choisi JavaMonkeyEngine. le default c'est que tout est en anglais... mais bon on le comprend tous plus ou moins. c'etait le scenographe le plus performant et il offre enormement de support ainsi que pas mal de tuto et d'exemple complet.

    Je ne suis pas aller bien loin dans les tests, ce n'est qu'une impression générale.

    j'utilise aussi de un peu directement JOGL quand j'ai besoin de faire un affichage 3d rapidement.
    exemple :

    mais c'est vraiment a la barbare de le faire directement avec JOGL. je ne suis pas pres de recommencer a moins d'avoir une année devant moi .

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/02/2014, 17h30
  2. Erreur suite à crash PC "Invalid project description"
    Par seiryujay dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 10/04/2012, 14h41
  3. Erreur JVM crash
    Par pjmorce dans le forum Général Java
    Réponses: 5
    Dernier message: 28/10/2008, 12h22
  4. erreur IIS [ crash]
    Par zaineb.z dans le forum IIS
    Réponses: 6
    Dernier message: 14/07/2008, 18h56
  5. Message d'erreur "can crash your computer"
    Par Pedrozito dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 14/04/2008, 11h19

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