Exception in thread “thread-4” de java.lang.NullPointerException
J'apprécierais vraiment de l'aide avec mon programme
Exception in thread "Thread-4" java.lang.NullPointerException
at ServerConnect.replyChoice(BaseStaInstance.java:63)
at ServerConnect.run(BaseStaInstance.java:45)
at java.lang.Thread.run(Thread.java:619)
mon ServerConnect fonction ressemble à :-
class ServerConnect extends Thread {
Socket skt;
String sProcessId;
ServerConnect scnt = null;
ObjectOutputStream myOutput;
ObjectInputStream myInput;
ServerConnect(){}
ServerConnect(Socket connection, String sProcessNo) {
this.skt = connection;
this.sProcessId = sProcessNo;
}
public void run() {
try {
myInput = new ObjectInputStream(skt.getInputStream());
ServerConnect scnt = new ServerConnect();
while(true) {
try{
int ownTimeStamp = Global.iTimeStamp;
Object buf = myInput.readObject();
//if we got input, print it out and write a message back to the remote client...
if(buf != null){
LINE 45--> **scnt.replyChoice(buf);**
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
} catch(IOException e) {
e.printStackTrace();
}
}
void replyChoice(Object buf){
try{
LINE 63 --> **myOutput = new ObjectOutputStream(skt.getOutputStream());**
System.out.println("Server read:[ "+buf+" ]");
myOutput.writeObject("got it");
myOutput.flush();
}catch(IOException e){
e.printStackTrace();
}
}
}
Son fondamentalement un socket de la programmation et de l'application multithread. De les exécuter sur différents terminaux afin de le client et le serveur établir des connexions, j'exécute mon code. Mais il génère l'erreur ci-dessus sur les deux terminaux. Ses quelque chose à faire avec mon déclarant la myOutput variable à la mauvaise place. Quelqu'un pourrait-il m'aider.
Le message d'erreur, j'ai mis en évidence la ligne 63 et la ligne 45 dans le morceau de code ci-joint.
Vous devez vous connecter pour publier un commentaire.
Ces instructons vous aider à la négociation des erreurs d'exécution comme vos entrées en phase nationale au moment de la compilation des erreurs, ce qui est la meilleure chose que vous pouvez faire. Remarque: Cette truc est destiné à être utilisé en général.
Votre objet est initialisé avec le premier constructeur, qui ne prend pas de paramètres. En conséquence,
skt
n'est jamais initialisée et est doncnull
. Lorsque vous appelezskt.getOutputStream()
, il lève une exception de pointeur null car il ne peut pas déréférencerskt
.ce constructeur utilisez-vous ? cause skt peut-être non initialisée
//Edit : oh, je vois maintenant, vous utilisez le mauvais constructeur
à