Erreur : java.lang.NullPointerException

cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008 - 15 mars 2008 à 23:18
cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008 - 18 mars 2008 à 14:17
J'ai utilisé cette fonction :

public void instbd(){
        try
        {
            context.installBundle("file:\\C:\\Bundles\\BSender\\BSender.jar");
        }
        catch(Exception ioe){System.out.println("erreur : " + ioe );}
    }

et au lancement j'ai cette erreur :
erreur : java.lang.NullPointerException

ca s'intrepret comment ?

Merci

12 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 mars 2008 à 07:59
Salut,

C'est très certainement que ta variable context n'a jamais été initialisée !
______________________________________
DarK Sidious
0
cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008
16 mars 2008 à 10:12
Salut DARKSIDIOUS,

Je ne pense pas que ca soit ca puisque j'ai rajouté quelques lignes dans mon code pour faire une interface graphique, quand j'enleve ces lignes ca marche, quand je rajoute ces lignes j'ai cette erreure
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 mars 2008 à 10:30
Salut,

C'est pourtant ce que te dit l'erreur : A un moment donné, t'essaye d'utiliser un objet qui n'a pas été crée (il est à null), donc soit c'est l'objet context, soit c'est dans la fonction installBundle où il y a l'utilisation d'un objet null !
______________________________________
DarK Sidious
0
cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008
16 mars 2008 à 10:48
je dois peut etre t'ecrire une partie du code pour que tu puisses interpreter l'erreur

En fait quand j'enleve le try/catch j'ai ce message d'erreur : "unhandled exception type bundleException" et je viens de me rendre compte que meme si j'enlee le code de l'interface graphique j'ai toujour le meme probleme.

Voici le code :

public

class Activator
implements BundleActivator {
   public

void start(BundleContext context)
throws Exception {

      System.
out.println(
"installation started");
      instbd();

      }
   
   public

void instbd(){
      
try
      { 
         
context.installBundle(
"file:\\C:\\Bundles\\BSender\\BSender.jar");
       }
        
catch(Exception ioe){System.
out.println(
"erreur : " + ioe );}
}

Remarque : Quand je fais appel a la fonction installBundle directement dans la methode start ca marche

   public
void start(BundleContext context)
throws Exception {

      System.
out.println(
"installation started");
      context.installBundle(
"file:\\C:\\Bundles\\BSender\\BSender.jar");

      }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 mars 2008 à 12:09
Salut,

C'était exactement cà : la variable context dans la fonction instbd n'est pas initialisée (elle n'existe même pas !) C'est un paramètre de la fonction start, par de la fonction instbd !

Sinon, il est vraiment très très crade de mettre un chemin vers un fichier en dur : "file:\\C:\\Bundles\\BSender\\BSender.jar" cela t'enlève les avantages de java : non seulement tu limite l'utilisation de ton programme aux seuls possesseurs de windows qui ont un disque dur nommé C (y'en a qui en n'ont pas, si si je t'assure !), mais encore plus grave : il faut absolument que le fichier BSender.jar se trouve au bon endroit, ce qui un risque énome d'incompatibilité en production !
______________________________________
DarK Sidious
0
cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008
16 mars 2008 à 12:45
Donc si j'ai bien compris, la methode instbd() doit reconnaitre la variable context. Dans ce cas qu'est ce que je dois faire ?

Cela dit, j'ai declaré une variable de cette facon

BundleContext context

et ca n'a pas marché
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 mars 2008 à 13:39
Salut,

Ben rajoute le en paramètre à ta fonction instbd

______________________________________
DarK Sidious
0
cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008
16 mars 2008 à 13:58
oui ca marche bien ta solution, reste à faire le plus important.

Mon application n'est autre qu'une interface graphique dans la quelle il y a un bouton "install"
je veux que lorsque j'appuie sur le bouton la fonction instbd() se lance.
j'ai essayé mais ca ne marche pas

Je te donne le code si tu veux :

public

class Activator
implements BundleActivator {

   private JPanel
jContentPane =
null ;
   
private JButton
instBtn =
null;
   
private JFrame
MyFrame ;

   
public
void start(BundleContext context)
throws Exception {
      launchgui();
      instbd(context); // ici ca marche bien
   }

   public
void stop(BundleContext context)
throws Exception {

   }

   private JButton getInstBtn() {
      
if (
instBtn = =
null ) {
         
instBtn =
new JButton();

         instBtn.addActionListener(
new java.awt.event.ActionListener() {
            
public
void actionPerformed(java.awt.event.ActionEvent e) {
               instbd(context); // ici ca bloque !!!
            }
});
}
      
return
instBtn;
}

private
void initialize() {
   
MyFrame.setSize(300, 200);
   
MyFrame.setDefaultCloseOperation(javax.swing.JFrame.
EXIT_ON_CLOSE );
   
MyFrame.setContentPane(getJContentPane());
   
MyFrame.setTitle(
"JFrame");
   
MyFrame.setVisible(
true);
   }

private JPanel getJContentPane() {
   
if (
jContentPane = =
null ) {
      
jContentPane =
new JPanel();
      
jContentPane.setLayout(
new BorderLayout());
      
jContentPane.add(getInstBtn(), java.awt.BorderLayout.
CENTER );
   }
   
return
jContentPane;
 }

public
void launchgui(){
   
MyFrame =
new JFrame();
   initialize();
   }

public
void instbd(BundleContext context ){
   
try
   { 
      context.installBundle(
"file:\\C:\\Bundles\\BSender\\BSender.jar");
   }
catch(Exception ioe){System.
out.println(
"erreur : " + ioe );}
  }
}
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 mars 2008 à 18:07
Salut,

Exactement le même problème qu'avant... Apprends à utiliser Java et la portée des variables avant d'aller plus loin.

______________________________________
DarK Sidious
0
cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008
16 mars 2008 à 18:14
je sais tres bien qu'il faut commencer par les bases pour apprendre un nouveau langage mais on me demande de faire des trucs difficiles alors que je n'ai jamais programmer en JAVA et que je dois rendre le travail au bon delais.


 


Que dois-je faire pour que la variable context soit visible pour les autres methodes ?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 mars 2008 à 19:59
Salut,

C'est loin d'être difficile de déclarer et utiliser une variable comme il faut ! Je dirais même que c'est la base de tout !

Le deuxième problème que tu rencontre est exactement le même que le premier, j'en déduis donc que tu n'as rien compris à ce que tu as fais pour le résoudre... Si tu ne fais pas l'effort de comprendre, tu avancera beaucoup moins vite !

C'est pour cà que je te conseille vivement d'apprendre le Java avant de programmer la moindre chose avec ce langage... C'est comme si tu tirais au fusil sans comprendre son fonctionnement : il y aura forcément des morts à la longue...
______________________________________
DarK Sidious
0
cs_JazzyLove Messages postés 38 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 7 avril 2008
18 mars 2008 à 14:17
Probleme resolu !!!
0
Rejoignez-nous