JAVA [null pointer Exception] [Fermé]

Willy - 27 avril 2007 à 12:19 - Dernière réponse :  tomi
- 28 mars 2008 à 19:30
Bonjour les amis !

Je suis débutant dans la programmation JAVA en particulier le SWING.

J'ai présentement deux problèmes :

1 - Cette classe me produit une erreur du type : null pointer Exception! Et j'aimerais bien savoir comment la résoudre !

Voici le code :


import java.io.IOException;


public class Desktop {

	
public static void lancerApplication(String commande) {
        
  Runtime rt = null;
  rt.getRuntime();
         try {
            Process proc = null;
            proc = rt.exec(commande);
            
         }
         catch (IOException e) {System.out.println("Problème Entée sortie");}


}
          public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
	
		
          String macommande = "C:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD";
		lancerApplication(macommande);
			
		

	}

}




2 - Je fais créé fenêtre qui à l'excécution apparait toute petite alors qu'à la création, elle a une bonne taille. Ecxécutez ce code et vous comprendrez!

package project1pfu;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import javax.swing.ActionMap;
import javax.swing.BorderFactory;
import javax.swing.DefaultButtonModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class bureau extends JFrame {


    private JPanel jPanel1 = new JPanel();
  
    private JPanel jPanelBureautique = new JPanel();
       private JButton jButtonMsWord = new JButton();
       private JButton jButtonMsExcell = new JButton();
       private JButton jButtonAccess = new JButton();
       private JButton jButtonOutlook = new JButton();
       private JButton jButtonPowerPoint = new JButton();
       private JPanel jPanelUtilitaire = new JPanel();
       private JButton jButtonPutty = new JButton();
       private JPanel jPanelExplorer = new JPanel();
       private JButton jButtonExplorer = new JButton();
       private JButton jButtonIexplore = new JButton();

 
    
    
    public bureau() {
        
        
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

    private void jbInit() throws Exception {
        this.setSize(new Dimension(570, 526));
        this.setTitle("Panneau de lancement des applications");
        
        
        
        jPanel1.setBounds(new Rectangle(5, 5, 400, 450));
        jPanel1.setLayout(null);

        jPanel1.add(jPanelBureautique,null);

        jPanelUtilitaire.add(jButtonPutty, null);
        
        jPanel1.add(jPanelUtilitaire,null);
        jPanel1.add(jPanelExplorer, null);
        jPanelBureautique.setBounds(new Rectangle(5, 5, 375, 165));
        jPanelBureautique.setLayout(null);
        jPanelBureautique.setToolTipText("null");
        jPanelBureautique.setBorder(BorderFactory.createTitledBorder("Bureautique"));


        // Ajout des panels de la feuille au panel principal

        jPanelBureautique.add(jButtonMsWord, null);
        jPanelBureautique.add(jButtonPowerPoint, null);
        jPanelBureautique.add(jButtonOutlook, null);


        jPanelBureautique.add(jButtonAccess, null);
        jPanelBureautique.add(jButtonMsExcell, null);
        jButtonMsWord.setText("Microsoft Word");
        jButtonMsWord.setBounds(new Rectangle(10, 25, 150, 25));
        jButtonMsWord.setToolTipText("null");
        jButtonMsWord.setMnemonic('W');
        jButtonMsWord.setActionMap(new ActionMap());
        jButtonMsWord.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonMsWord_mouseClicked(e);
                    }
                });


        jButtonMsExcell.setText("Microsoft Excel");
        jButtonMsExcell.setBounds(new Rectangle(10, 65, 150, 25));
        jButtonMsExcell.setMnemonic('x');
        jButtonMsExcell.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonMsExcell_mouseClicked(e);
                    }
                });
        jButtonMsExcell.setModel(new DefaultButtonModel());
        jButtonAccess.setText("Microsoft Access");
        jButtonAccess.setBounds(new Rectangle(180, 25, 145, 25));
        jButtonAccess.setMnemonic('A');
        jButtonAccess.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonAccess_mouseClicked(e);
                    }
                });
        jButtonOutlook.setText("Microsoft Outlook");
        jButtonOutlook.setBounds(new Rectangle(180, 65, 145, 25));
        jButtonOutlook.setMnemonic('O');
        jButtonOutlook.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonOutlook_mouseClicked(e);
                    }
                });
        jButtonPowerPoint.setText("Microsoft Powerpoint");
        jButtonPowerPoint.setBounds(new Rectangle(10, 105, 150, 25));
        jButtonPowerPoint.setMnemonic('P');
        jButtonPowerPoint.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonPowerPoint_mouseClicked(e);
                    }
                });


        jPanelUtilitaire.setBounds(new Rectangle(5, 175, 375, 115));
        jPanelUtilitaire.setLayout(null);
        jPanelUtilitaire.setToolTipText("null");
        jPanelUtilitaire.setBorder(BorderFactory.createTitledBorder("Utilitaires"));

        jButtonPutty.setText("Putty Telnet & SSH");
        jButtonPutty.setBounds(new Rectangle(10, 25, 150, 25));
        jButtonPutty.setMnemonic('y');
        
        
        
        jButtonPutty.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonPutty_mouseClicked(e);
                    }
                });
        
        
        
        jPanelExplorer.setBounds(new Rectangle(5, 295, 375, 105));
        jPanelExplorer.setLayout(null);
        jPanelExplorer.setToolTipText("null");
        jPanelExplorer.setBorder(BorderFactory.createTitledBorder("Explorateurs"));
        jButtonExplorer.setText("Explorateur Windows");


        jPanelExplorer.add(jButtonExplorer, null);
        jPanelExplorer.add(jButtonIexplore, null);
        this.getContentPane().add(jPanel1, null);
        jButtonExplorer.setBounds(new Rectangle(10, 25, 150, 25));
        jButtonExplorer.setMnemonic('E');
        jButtonExplorer.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonExplorer_mouseClicked(e);
                    }
                });
        jButtonIexplore.setText("Internet Explorer");
        jButtonIexplore.setBounds(new Rectangle(10, 65, 150, 25));
        jButtonIexplore.setMnemonic('I');
        jButtonIexplore.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        jButtonIexplore_mouseClicked(e);
                    }
                });
       
      //Display the window.
        this.pack();
        this.setVisible(true);
        
    }


    private void jButtonMsWord_mouseClicked(MouseEvent e) {
       
    }

    private void jButtonMsExcell_mouseClicked(MouseEvent e) {
        
    }

    private void jButtonAccess_mouseClicked(MouseEvent e) {
        
    }

    private void jButtonOutlook_mouseClicked(MouseEvent e) {
        
    }

    private void jButtonPowerPoint_mouseClicked(MouseEvent e) {
        
    }

    private void jButtonPutty_mouseClicked(MouseEvent e) {
        
       
    }

    private void jButtonExplorer_mouseClicked(MouseEvent e) {
       
    }

    private void jButtonIexplore_mouseClicked(MouseEvent e) {
       
    }



 
     public static void main(String[] args) throws Exception {
             //Schedule a job for the event-dispatching thread:
             //creating and showing this application's GUI.
             
                     bureau lebureau = null;
                     lebureau = new bureau();
                     lebureau.jbInit();
                    
 
 } 

}



Si vous avez de la doc à me proposer ou un site pour que j'apprenne mieux, je suis preneur.

Merci d'avance
Afficher la suite 

7 réponses

kij_82 4100 Messages postés jeudi 7 avril 2005Date d'inscriptionContributeurStatut 2 septembre 2013 Dernière intervention - 27 avril 2007 à 12:29
+3
Utile
2
Ton nullPointerException vient de là :
Runtime rt = null;
  rt.getRuntime();


rt étant null tu ne peux pas appeler de méthode dessus.
Il faut instancier ton objet avant en faisant un new par exemple :
rt = new Runtime();  // Utilise le bon constructeur pour ca, avec les parametres qu'il faut si nécessaires.

Cette réponse vous a-t-elle aidé ?  
Merci j'ai corrigé mais la fentre SWING s'ouvre toujours en tout petit en haut ! Kesce kil faut faire ?

Code corrigé :
   public static void lancerApplication(String commande) {
            
            Runtime rt = Runtime.getRuntime();
             try {
                Process proc = rt.exec(commande);
                
             }
             catch (IOException e) {System.out.println("Problème Entée sortie");}


    }
Pierro > Willy - 27 avril 2007 à 14:53
Essaye ce que j'ai mis dans le post en dessous.
+1
Utile
bonjour tout le monde!Je suis actuellement en train de faire un projet java qui consiste à évaluer une expression en affichant toutes les étapes et en utilisant une pile.Le problème est que depuis plusieurs jour je ne trouve pas l'erreur lorsque j'exécute le programme il me renvoi : java.lang.NullException

at Pile.sommet(pile.java:16)
at debut2.evaluation(debut2.java:139)
at debut2.main(debut2.java:16)


je sollicite votre aide Merci.

voici ce fameux programme :

import java.util.*;
import java.util.StringTokenizer;


public class debut2 {


public static void main (String args []) {
String ok=new String("oui");
do {

TextWindow.printLine("Donner l'expression a evaluer : ") ;
String expression=TextWindow.readString();
StringTokenizer e=new StringTokenizer(expression);

evaluation(e);



TextWindow.printLine("voulez vous recommencer?");
ok=TextWindow.readString();
} while(ok.equals("oui"));

}





public static void evaluation (StringTokenizer e) {

Pile p = new Pile();
String op=new String("+");
String w;
String z;
int b;
int c;
int resa;
String resb;
String ope;

while (e.hasMoreTokens()) {

String i = e.nextToken();

if (estunnombre(i)) {


p.empiler(i);



}


else if (estunoperateur(i)) {


if (estprioritaire(op,i)) {




p.empiler(e.nextToken());

w = p.sommet();
b=Integer.parseInt(w);


p.depiler();
ope = p.sommet();

p.depiler();
z = p.sommet();
c=Integer.parseInt(z);


p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);

} /* fin de si estprioritaire */



else {

if (!(resteexpression(p))) {
p.empiler(i); } /* fin !resteexpression */


else {


w = p.sommet();
b=Integer.parseInt(w);


p.depiler();
ope = p.sommet();

p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);


} /* fin de else */

op=i;


} /* fin de else */


} /* fin de else if */



} /* fin de while */




if (resteexpression(p)) {

w = p.sommet();
b=Integer.parseInt(w);


p.depiler();
ope = p.sommet();

p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);



} /* fin de if */




} /* fin de evaluation */



public static boolean estsuperieur(String premier , String deuxieme) {

if ( (deuxieme.equals("x"))||(deuxieme.equals("/"))) {

return true; }

else if ((deuxieme.equals("+"))||(deuxieme.equals("-"))) {

if ((premier.equals("*"))||(premier.equals("/"))) {
return false; }

else {
return true; }

}

else { return false ; }


}









public static boolean estunnombre(String valeur) {

for (int i = 0; i < valeur.length(); i++) {

char c = valeur.charAt(i);
if(c<'0' || c>'9') return false;
}
return true;

}





public static boolean estunoperateur(String x) {

if (x.equals("+") || x.equals("-") || x.equals("*")|| x.equals("/")) {

return true; }

else { return false; }

}





public static int calculer(int x, String a,int y) {
if ( a.equals("+")) {
return x+y ; }

else if ( a.equals("*")) {
return x*y ; }

else if ( a.equals("-")) {
return x-y ; }

else if ( a.equals("/")) {
return x/y ; }

else return -1 ;

}


public static boolean estprioritaire(String premier , String deuxieme) {

if ( (deuxieme.equals("x"))||(deuxieme.equals("/"))) {

return true; }


else { return false ; }

}




public static boolean resteexpression(Pile q) {

String a=q.sommet();
q.depiler();

if (q.pileVide()) {

q.empiler(a);

return false; }

else {
q.empiler(a);

return true; }

}



}
0
Utile
2
Salut,

Pour le problème de taille de ta fenêtre, essaye d'enlever cette ligne à la fin de jbInit():

this.pack();

Pierro
J'ai enlevé le this.pack() et la fenêtre s'ouvre correctement.

Je veux provoquer des actions sur click de la souris. Je modife le code en y ajoutant les lignes suivantes dans Jinit()

jButtonExplorer.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jButtonExplorer_mouseClicked(e);
}
});

Je créé aussi la methode:

private void jButtonExplorer_mouseClicked(MouseEvent e) {
String commande;
commande = new String("C:\\WINDOWS\\explorer.exe");
lancerApplication(commande);
}

lancerApplication est le code corrigé donné plus haut . Mon but est de lancer une application de la machine grace à ce formulaire.

ça marche mais kan je clicke sur le bouton, l'action s'excécute deux fois. Ais je manqué quelque chose ?

Merci de me repondre

Merci
kij_82 4100 Messages postés jeudi 7 avril 2005Date d'inscriptionContributeurStatut 2 septembre 2013 Dernière intervention - 30 avril 2007 à 11:36
Je n'ai pas trop le temps de comprendre le code que tu as donné plus haut, mais le fait que tu ai l'action qui se fasse deux fois lorsque tu clique une seule fois sur ton bouton signifie que la fonction qui lance ton application est appelée deux fois.
Met des traceurs de log dans ton code pour voir par ou passe le programme exactement lorsque tu clique sur ton bouton.
Ainsi tu pourra déterminer quelle est l'erreur.