Я использую веб-сокеты в Java для подключения к моему серверу nodeJS.Я также использую Gson для анализа запросов и ответов. Json.
У меня есть исключение:
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:23)
в этой строке:
ConnectionResponse connectionResponse = gson.fromJson(messageContainer.getMessage(), ConnectionResponse.class);
если моя инициализация Gsonне только перед вызовом метода gson.toJson ().
Этот код прекрасно работает для меня:
import com.google.gson.Gson;
import java.net.URI;
import java.net.URISyntaxException;
public class Main {
public static void main(String[] args) {
try {
// open websocket
final WebsocketClientEndpoint clientEndPoint = new WebsocketClientEndpoint(new URI("ws://localhost:8000"));
// add listener
MessageContainer messageContainer = new MessageContainer();
clientEndPoint.addMessageHandler(messageContainer);
// send message to websocket
clientEndPoint.sendMessage("{\"type\":\"Connect\",\"name\":\"FrontClient\"}");
Gson gson = new Gson();
ConnectionResponse connectionResponse = gson.fromJson(messageContainer.getMessage(), ConnectionResponse.class);
System.out.println(connectionResponse.toString() + "yay");
// wait 5 seconds for messages from websocket
Thread.sleep(5000);
} catch (URISyntaxException ex) {
System.err.println("URISyntaxException exception: " + ex.getMessage());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Но если я перееду, Gson Gson= новый Gson ();где-то раньше он вылетает с ошибкой выше.
Например, этот код не работает:
import com.google.gson.Gson;
import java.net.URI;
import java.net.URISyntaxException;
public class Main {
public static void main(String[] args) {
try {
Gson gson = new Gson();
// open websocket
final WebsocketClientEndpoint clientEndPoint = new WebsocketClientEndpoint(new URI("ws://localhost:8000"));
// add listener
MessageContainer messageContainer = new MessageContainer();
clientEndPoint.addMessageHandler(messageContainer);
// send message to websocket
clientEndPoint.sendMessage("{\"type\":\"Connect\",\"name\":\"FrontClient\"}");
ConnectionResponse connectionResponse = gson.fromJson(messageContainer.getMessage(), ConnectionResponse.class);
System.out.println(connectionResponse.toString() + "yay");
// wait 5 seconds for messages from websocket
Thread.sleep(5000);
} catch (URISyntaxException ex) {
System.err.println("URISyntaxException exception: " + ex.getMessage());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
или это:
import com.google.gson.Gson;
import java.net.URI;
import java.net.URISyntaxException;
public class Main {
public static void main(String[] args) {
try {
// open websocket
final WebsocketClientEndpoint clientEndPoint = new WebsocketClientEndpoint(new URI("ws://localhost:8000"));
// add listener
MessageContainer messageContainer = new MessageContainer();
clientEndPoint.addMessageHandler(messageContainer);
Gson gson = new Gson();
// send message to websocket
clientEndPoint.sendMessage("{\"type\":\"Connect\",\"name\":\"FrontClient\"}");
ConnectionResponse connectionResponse = gson.fromJson(messageContainer.getMessage(), ConnectionResponse.class);
System.out.println(connectionResponse.toString() + "yay");
// wait 5 seconds for messages from websocket
Thread.sleep(5000);
} catch (URISyntaxException ex) {
System.err.println("URISyntaxException exception: " + ex.getMessage());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}