NullPointerException ao adicionar um texto no JTextArea através de um servidor

3 respostas Resolvido
R

Boa Noite gente, eu estou fazendo um chat com interface gráfica para que eu aprenda a mexer com Sockets. O usuário escreve num JTextField a mensagem e o cliente manda ela para o servidor, até aqui tá funcionando normalmente, o problema é quando eu tento fazer o servidor enviar essa mensagem pro JTextArea, quando eu faço isso da o erro NullPointerException.

<strong>Parte do código da classe Chat</strong>

public void keyPressed(KeyEvent e) {

if(e.getKeyCode() == KeyEvent.VK_ENTER) {

cliente.enviarMensagem(nome,mensagem.getText());

mensagem.setText("");

mensagem.requestFocus();

}		

}
<strong>Parte do código da classe Cliente</strong>

public void enviarMensagem(String nome, String msg) {

try {

PrintStream ps = new PrintStream(cliente.getOutputStream());

ps.println(nome+":"+msg);

} catch (IOException e) {

System.out.println("[.:ERRO:.] não foi possível enviar a mensagem!");

}

}
<strong>Parte do código da classe Servior</strong>

public void escutaCliente(Socket socket) {

try {

Scanner scan = new Scanner(socket.getInputStream());
new Thread(new Runnable() {

			public void run() {
			    while(scan.hasNextLine()) {
			    	String msg[] = scan.nextLine().split(":");
			    	Chat.mostrarMensagem(msg[0]+" disse: "+msg[1]);
			    }
			}
			
		}).start();
	} catch (IOException e) {
		e.printStackTrace();
	}
}
<strong>O erro</strong>

Exception in thread “Thread-0” java.lang.NullPointerException

at com.ryan.swing.Chat.mostrarMensagem(Chat.java:89)

at com.ryan.socket.Server$1.run(Server.java:37)

at java.lang.Thread.run(Unknown Source)

OBS: eu não consigo enviar o código do jeito certo nos tópicos que eu faço, eu uso o “Texto pré-formatado” mas não funciona.

3 Respostas

staroski

Porque esse método é estático?

A classe Chat não está rodando no cliente?

R

Não, o cliente que está rodando na classe chat, eu fiz assim porquê eu pensei que fosse o certo, e sobre o metodo estático, eu fiz assim só pra testar.

staroski
Solucao aceita

Então, o cliente e o servidor rodam duas instâncias diferentes da máquina virtual.

Seu servidor tem que enviar as mensagens pro cliente via Socket.

Criado 12 de julho de 2020
Ultima resposta 13 de jul. de 2020
Respostas 3
Participantes 2