2015-01-03 2 views
0

내 서버가 클라이언트에 연결되었을 때이 예외가 발생하면 내 프로그램이 연결 후 응답하지 않을 때 문제가 발생합니다. 나는 gui 클래스에 대한 코드를 생성하기 위해 netbeans gui 디자이너를 사용합니다. 나는 또한 당신이 고려하고있는 것을 위해 나의 코드에서 아래에 예외로 보여줄 라인 번호를 주석 처리한다. 소켓 수락하기 전에 모든 작업을 찾을 수 있습니다. 도와주세요!Java Gui Thread Coding?

자바에서 serverui.ServerThread.run (ServerUi.java:19)에서 serverui.ServerUi.StartServer (ServerUi.java:62)에서 예외 글 "스레드 0"java.lang.NullPointerException이 .lang.Thread.run (Thread.java:745)

class ServerThread implements Runnable{ 

public void run(){ 
try { 
     ServerUi t = new ServerUi(); 
     t.StartServer(); //Line 19 
    } catch (IOException ex) { 
     //Logger.getLogger(ServerThread.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (InterruptedException ex) { 
      //Logger.getLogger(ServerThread.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

} 


public class ServerUi { 
byte s = 0; 
static ServerSocket serverSocket = null; 
Socket clientSocket = null; 
PrintWriter out = null; 
BufferedReader in = null; 
public static boolean checklisten = false; 
static gui winframe = null; 
public static void main(String[] args)throws IOException { 

winframe = new gui(); 
serverSocket = new ServerSocket(10007); 
Thread tserver = new Thread(new ServerThread()); 
tserver.start(); 

java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       winframe.setVisible(true); 
      } 
     }); 


    } 

    public void StartServer()throws IOException, InterruptedException 
    { 

       winframe.displayMessage("Listening for Connection"); 
       clientSocket = serverSocket.accept(); 
       winframe.displayMessage("Connected"); 
       String inputLine; 
       while(true){ 
       while((inputLine=in.readLine()) != null) // Line 62 
       { 

        winframe.displayMessage("Server: "+ inputLine); 
        out.println(inputLine); 

        if(inputLine.equals("Bye.")) 
        { 
         this.Closeconnection(); 
         break; 
        } 

        if(winframe.checkdisconnectbtn == true) 
        { 
         this.Closeconnection(); 
         break; 
        } 

       } 

       } 
    } 
+0

제거 "[해결 : 그냥 입력 및 출력은 초기화 실종]"를. 다시 편집을 굴려 제목에서. 대신 당신을 도운 답변을 수락하거나 자신의 솔루션을 게시해야합니다. –

답변

4

당신은 당신의 BufferedReader를 초기화하지 않습니다.

BufferedReader in = null; 

는 ... 때문에이 라인은 NullPointerException 실패 : 일반적으로

while((inputLine=in.readLine()) != null) // Line 62 

, 당신이 NullPointerException을 볼 때마다, 당신이해야 할 모든 라인을보고 모든 개체를 확인하는 null에 대한 메소드를 호출하고 있습니다.

+0

감사합니다. 나는 그것을 놓친다. –

+1

@SarinSuriyakoon 언제든지! 다행이 당신을 도왔습니다. :) 일반적으로,'NullPointerException'을 볼 때마다 라인을보고'null'에 대한 메소드를 호출하는 모든 변수를 확인하십시오. – asteri

2

당신은에서 초기화되지 않았습니다

in = new BufferedReader(arguments);