Java.long.nullPointerException
Résolu
marybele86
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
marybele86 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
marybele86 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutante en JAVA RMI. J'essais de réaliser une application qui consiste à ajouter des abonnés à un répértoire téléphonique. Les programmes se compilent , mais dès que j'essais de lancer mon Client, Je tombe sur cette erreur java.long.nullPointerException. Voici le code Client que j'utilise :
import java.rmi.*;
import java.rmi.server.*;
public class Client_Repertoire {
public static void main(String[] args){
try{
Interface_Repertoire biss=(Interface_Repertoire)Naming.lookup("rmi://127.0.0.1:1099/MY");
Abonne F=new Abonne("mery","0613366401");
String a= biss.addAbonne(f);
System.out.println(a);
}
catch(Exception e){System.out.print(e);
}
}
}
Voici l'implémentation de la méthode addAbonne:
import java.rmi.*;
import java.rmi.server.*;
public class Object_Repertoire extends UnicastRemoteObject implements Interface_Repertoire {
Object_Repertoire()throws RemoteException
{
super();
}
int i=0,nmax=3 ;
Abonne A[]=new Abonne[3];
Abonne B;
// Ajout d'un nouvel abonné
public String addAbonne(Abonne a)throws RemoteException
{
if(i<=nmax)
{
A[i].name=a.name;
A[i].tel=a.tel;
i=i+1;
return "true";
}
else return "false";
}
SVP j'ai besoin de votre aide. C'est urgent
Je suis débutante en JAVA RMI. J'essais de réaliser une application qui consiste à ajouter des abonnés à un répértoire téléphonique. Les programmes se compilent , mais dès que j'essais de lancer mon Client, Je tombe sur cette erreur java.long.nullPointerException. Voici le code Client que j'utilise :
import java.rmi.*;
import java.rmi.server.*;
public class Client_Repertoire {
public static void main(String[] args){
try{
Interface_Repertoire biss=(Interface_Repertoire)Naming.lookup("rmi://127.0.0.1:1099/MY");
Abonne F=new Abonne("mery","0613366401");
String a= biss.addAbonne(f);
System.out.println(a);
}
catch(Exception e){System.out.print(e);
}
}
}
Voici l'implémentation de la méthode addAbonne:
import java.rmi.*;
import java.rmi.server.*;
public class Object_Repertoire extends UnicastRemoteObject implements Interface_Repertoire {
Object_Repertoire()throws RemoteException
{
super();
}
int i=0,nmax=3 ;
Abonne A[]=new Abonne[3];
Abonne B;
// Ajout d'un nouvel abonné
public String addAbonne(Abonne a)throws RemoteException
{
if(i<=nmax)
{
A[i].name=a.name;
A[i].tel=a.tel;
i=i+1;
return "true";
}
else return "false";
}
SVP j'ai besoin de votre aide. C'est urgent
4 réponses
Bonjour,
Quand tu écris ceci :
A[i].name=a.name;
A[i].tel=a.tel;
A[i] n'a jamais été instancié.
Il faudrait d'abord faire A[i] = new Abonne();
Voire remplacer simplement les deux lignes par
A[i] = new Abonne(a.name, a.tel);
Xavier
Quand tu écris ceci :
A[i].name=a.name;
A[i].tel=a.tel;
A[i] n'a jamais été instancié.
Il faudrait d'abord faire A[i] = new Abonne();
Voire remplacer simplement les deux lignes par
A[i] = new Abonne(a.name, a.tel);
Xavier
marybele86
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
Merci Xavier. J'ai essayé avec ta méthode et ça marche :)
Pour avoir plus d'information il est préférable d'utiliser:
au lieu de:
Cela vous permettra d'obtenir la ligne exacte qui provoque l'erreur qui est (probablement) un objet non-initialisé.
e.printStackTrace();
au lieu de:
System.out.print(e);
Cela vous permettra d'obtenir la ligne exacte qui provoque l'erreur qui est (probablement) un objet non-initialisé.
Bonjour,
Je pense que la méthode suivante contient une erreur d'initialisation:
En effet, l'instruction:
de déclaration ne crée par trois objets mais un tableau de trois "null" et lorsque vous essayez:
l'exception est provoquée parce que A[i] est "null" alors il est impossible de faire null.a = ...
Il faut réinitialiser votre tableau avec trois nouveau Abonne avant de faire les affection ou de le créer sur le champs:
Bon Courage.
Je pense que la méthode suivante contient une erreur d'initialisation:
public String addAbonne(Abonne a)throws RemoteException { if(i<=nmax) { A[i].name=a.name; A[i].tel=a.tel; i=i+1; return "true"; } else return "false"; }
En effet, l'instruction:
Abonne A[]=new Abonne[3];
de déclaration ne crée par trois objets mais un tableau de trois "null" et lorsque vous essayez:
A[i].name=a.name;
l'exception est provoquée parce que A[i] est "null" alors il est impossible de faire null.a = ...
Il faut réinitialiser votre tableau avec trois nouveau Abonne avant de faire les affection ou de le créer sur le champs:
public String addAbonne(Abonne a)throws RemoteException { if(i<=nmax) { A[i] = new Abonne(); A[i].name=a.name; A[i].tel=a.tel; i=i+1; return "true"; } else return "false"; }
Bon Courage.