나는이 질문이 여기에 무수히 많은 시간을 물었습니다. 그리고 나는 해결책을 찾기 위해 그와 다른 정보원을 수색했으나 나는 그 오류를 해결할 수 없습니다. 내 ClientPlayer 클래스 특성에 대한 getter 및 setter가 있고, 특정 단추가 호출 될 때 setter가 GUI에서 호출되며 클라이언트가 연결하여 서버에 개체를 보낸 후에 getter를 사용하려고합니다. 메소드 호출 "this.client.sendTCP (clientPlayer.getPlayerName());" ClientController에서 nullPointerException을 반환합니다.서버에 보낼 때 getter가 null을 반환하는 이유는 무엇입니까?
오류 : "JavaFX Application Thread"java.lang.IllegalArgumentException : object가 null 일 수 없습니다.
내 생각에 ClientPlayer의 새 인스턴스를 한 번 만들어서 너무 많은 문자열을 반환하므로 playerName이 원래 none으로 설정되어 있기 때문에 null이 반환됩니다. 그러나 문제를 해결하는 방법에 대해서는 확신 할 수 없습니다. 나는 정말 어떤 도움을 주셔서 감사합니다. 내가 서버에 연결 버튼을 설정 내 GUI 코드의 관련 부분 아래
public class ClientPlayer implements Serializable {
public ClientPlayer() {
}
private String playerName;
public void setPlayerName(String playerName) {
this.playerName = playerName;
}
public String getPlayerName() {
return this.playerName;
}
}
: 여기
ClientPlayer clientPlayer = new ClientPlayer();
clientToGame.setOnAction((ActionEvent w) -> {
clientPlayer.setPlayerName(clientNameText.getText());
clientController.connect();
window.setScene(lobbyScene);
});
내가 들어 가려고 내 클라이언트 클래스의 비트입니다 이름을 지정하고 서버에 보내
public class ClientController() {
ClientPlayer clientPlayer = new ClientPlayer();
public void connect() {
if (client.isConnected()) {
Logger.getLogger(getClass().getName()).log(Level.INFO, "You are already connected to :{0}", config.getHost());
return;
}
this.client.start();
try {
this.client.connect(5000, config.getHost(), config.getTCPPort());
System.out.println("Successfully connected to " + config.getHost());
this.client.sendTCP(clientPlayer.getPlayerName());
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, "Server connection failed: {0}", ex.getMessage());
throw new RuntimeException(ex);
}
MessageRegistry.registerMessages(client.getKryo());
this.client.addListener(listener);
}
}
인가 'ClientToGame.setOnAction ...'은'ClientController' 클래스 안에 있습니까? –
getter는 setter가'String playerName'을 초기화하고'playerName' 변수가 초기화되지 않아 null을 반환하는 경우에만 값을 반환합니다! –
아니, 아니야. GUI 클래스에서 텍스트 필드 이름을 얻는다. –