Javaクライアントサーバープログラムの奇妙なNullPointerException

pranavjain1108

クライアントがサーバーから2つの文字列を受け取り、独自の文字列で応答する必要がある2プレーヤーゲームを作成しています。ここでは、内部処理は関係ありません。重要なのは、サーバーからデータを送信するたびに、クライアントの1つがsetText()関数に対してNullPointerExceptionを表示することです。私の大学の他の誰もその理由を知らないので、私は困惑しています。この問題の解決にご協力ください。コードは次のとおりです(IDEはNetBeans 7.3.1です)。

サーバ

public class TCPServer {

public static void main(String argv[]) throws Exception {
    String childWord, childWord2;
    Trie1 obj = new Trie1();
    obj.loadTrie();
    ServerSocket welcomeSocket = new ServerSocket(6759);
    ServerSocket welcomeSocket2 = new ServerSocket(6559);
    //BufferedReader dd = new BufferedReader(new InputStreamReader(System.in));
    String parentWord;
    while (true) {

        Socket connectionSocket = welcomeSocket.accept();
        Socket connectionSocket2 = welcomeSocket2.accept();
        //parentWord = dd.readLine();
        parentWord = GlobalStuff.word;
        System.out.println("word: "+parentWord);
        BufferedReader inFromClient =
                new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        DataOutputStream outToClient =
                new DataOutputStream(connectionSocket.getOutputStream());
        BufferedReader inFromClient2 =
                new BufferedReader(new InputStreamReader(connectionSocket2.getInputStream()));
        DataOutputStream outToClient2 =
                new DataOutputStream(connectionSocket2.getOutputStream());
        outToClient.writeBytes(parentWord + "\n");
        outToClient2.writeBytes(parentWord + "\n");
        outToClient.writeBytes(GlobalStuff.sentence + "\n");
        outToClient2.writeBytes(GlobalStuff.sentence + "\n");
        childWord = inFromClient.readLine();
        childWord2 = inFromClient2.readLine();
        /*System.out.println(childWord);
         System.out.println(childWord2);*/
        //System.out.println(clientSentence);
        if (childWord.equals(childWord2)) {
            System.out.println("The suggestions match!!");
            obj.Trie1Main(parentWord, childWord);
        } else {
            System.out.println("The suggestions DO NOT match...the users entered:");
            System.out.println(childWord+" and "+childWord2);
        }
    }
}
}

クライアント:

package clientserver;
import markI.*;
import sessionmanager.*;
import java.io.*;
import java.net.*;
public class Player1 extends javax.swing.JFrame {

private static Socket clientSocket;
private static BufferedReader inFromUser;
private static DataOutputStream outToServer;
private static BufferedReader inFromServer;
private static String modifiedSentence;
private static String modifiedWord;

/**
 * Creates new form TestFrameOne
 */
public Player1() {
    initComponents();
}

//user defined

private void initComponents() {

    tlabel = new javax.swing.JLabel();
    ilabel = new javax.swing.JLabel();
    totalScore = new javax.swing.JLabel();
    wordtf = new javax.swing.JTextField();
    submit = new javax.swing.JButton();
    close = new javax.swing.JButton();
    round = new javax.swing.JLabel();
    opponent = new javax.swing.JLabel();
    hword = new javax.swing.JLabel();
    timeLeft = new javax.swing.JLabel();
    points = new javax.swing.JLabel();
    jButton1 = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    sentenceArea = new javax.swing.JTextArea();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    tlabel.setFont(new java.awt.Font("Trebuchet MS", 1, 24)); // NOI18N
    tlabel.setForeground(new java.awt.Color(51, 0, 255));
    tlabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    tlabel.setText("WORD KING");

    ilabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    ilabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/markI/crown_low.png"))); // NOI18N

    totalScore.setFont(new java.awt.Font("Trebuchet MS", 1, 16)); // NOI18N
    totalScore.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    totalScore.setText("0");
    totalScore.setBorder(javax.swing.BorderFactory.createTitledBorder("Net Score"));

    wordtf.setFont(new java.awt.Font("Trebuchet MS", 0, 14)); // NOI18N
    wordtf.setBorder(javax.swing.BorderFactory.createTitledBorder("Alternate Word"));

    submit.setBackground(new java.awt.Color(102, 0, 255));
    submit.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    submit.setText("Submit");
    submit.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            submitActionPerformed(evt);
        }
    });

    close.setText("X");
    close.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            closeActionPerformed(evt);
        }
    });

    round.setFont(new java.awt.Font("Trebuchet MS", 1, 16)); // NOI18N
    round.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    round.setText("0");
    round.setBorder(javax.swing.BorderFactory.createTitledBorder("Round"));

    opponent.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    opponent.setIcon(new javax.swing.ImageIcon(getClass().getResource("/markI/face_low.jpg"))); // NOI18N
    opponent.setBorder(javax.swing.BorderFactory.createTitledBorder("OPPONENT"));

    hword.setFont(new java.awt.Font("Trebuchet MS", 1, 18)); // NOI18N
    hword.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    hword.setBorder(javax.swing.BorderFactory.createTitledBorder("Highlighted Word"));

    timeLeft.setFont(new java.awt.Font("Trebuchet MS", 1, 16)); // NOI18N
    timeLeft.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    timeLeft.setText("30");
    timeLeft.setBorder(javax.swing.BorderFactory.createTitledBorder("Time"));

    points.setFont(new java.awt.Font("Trebuchet MS", 1, 16)); // NOI18N
    points.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    points.setText("0");
    points.setBorder(javax.swing.BorderFactory.createTitledBorder("Points"));

    jButton1.setBackground(new java.awt.Color(102, 0, 255));
    jButton1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jButton1.setText("Leave Game");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    sentenceArea.setColumns(20);
    sentenceArea.setRows(5);
    sentenceArea.setText("The quick brown fox jumps over a lazy dog.");
    sentenceArea.setBorder(javax.swing.BorderFactory.createTitledBorder("Sentence"));
    jScrollPane1.setViewportView(sentenceArea);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addComponent(hword, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(wordtf, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE))
                                .addGroup(layout.createSequentialGroup()
                                    .addGap(55, 55, 55)
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addComponent(ilabel)
                                        .addComponent(tlabel))))
                            .addGap(18, 18, 18)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(points, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(timeLeft, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(round, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(totalScore, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(opponent)
                                    .addGap(18, 18, 18)
                                    .addComponent(close)))))
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGroup(layout.createSequentialGroup()
                    .addGap(21, 21, 21)
                    .addComponent(submit, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(35, 35, 35))))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(29, 29, 29)
                        .addComponent(opponent))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(18, 18, 18)
                        .addComponent(close)))
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(ilabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(tlabel)))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(hword, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(round)
                .addComponent(totalScore))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(points)
                .addComponent(timeLeft)
                .addComponent(wordtf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(submit, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addContainerGap())
    );

    pack();
}// </editor-fold>                        

private void submitActionPerformed(java.awt.event.ActionEvent evt) {                                       
    //wordtf.setText(modifiedSentence);
    try {
        String sentence = wordtf.getText();
        System.out.println(sentence);
        outToServer.writeBytes(sentence + '\n');
        clientSocket.close();
    } catch (Exception e) {
        System.out.println("Some error through submit button.\n" + e.getMessage());
    }
}                                      

private void closeActionPerformed(java.awt.event.ActionEvent evt) {                                      
    System.exit(WIDTH);        // TODO add your handling code here:
}                                     

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    this.setVisible(false);
    sessionmanager.WelcomePage.main(null);
}                                        

/**
 * @param args the command line arguments
 */
public static void main(String args[]) throws Exception {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TestFrameOne.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TestFrameOne.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TestFrameOne.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TestFrameOne.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Player1().setVisible(true);
        }
    });
    //Start clientserver

    inFromUser = new BufferedReader(new InputStreamReader(System.in));
    clientSocket = new Socket("172.16.30.183", 6759);
    //clientSocket = new Socket("172.16.38.156", 6759);
    outToServer = new DataOutputStream(clientSocket.getOutputStream());
    inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    modifiedWord = inFromServer.readLine();
    System.out.println("FROM SERVER: word " + modifiedWord);
    hword.setText(modifiedWord);
    modifiedSentence = inFromServer.readLine();
    System.out.println("FROM SERVER: sentence " + modifiedSentence);
    sentenceArea.setText(modifiedSentence);

    //End clientserver
}
// Variables declaration - do not modify                     
private javax.swing.JButton close;
public static javax.swing.JLabel hword;
private javax.swing.JLabel ilabel;
private javax.swing.JButton jButton1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel opponent;
private javax.swing.JLabel points;
private javax.swing.JLabel round;
public static javax.swing.JTextArea sentenceArea;
private javax.swing.JButton submit;
private javax.swing.JLabel timeLeft;
private javax.swing.JLabel tlabel;
private javax.swing.JLabel totalScore;
public static javax.swing.JTextField wordtf;
// End of variables declaration                   
}

これは例外です

クライアントが正しく実行されている場合、これが出力になるはずです

エラーメッセージの272行目はhword.setText(modifiedWord)です。

ピーターローリー

つまり、このメソッドを呼び出す前に、それが初期化されていることを確認する必要hwordnullあります。

GUIの更新は、いずれの場合もGUIスレッドで実行する必要があります。更新を実行するタスクを送信することをお勧めします。このようにして、使用するまでに初期化する必要があります。

java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
        hword.setText(modifiedWord);
    }
});

ただし、静的フィールドを設定する代わりに、Player1インスタンスでこのメソッドを呼び出す必要があります。コンストラクターで静的フィールドを初期化するべきではありません。

Player1 player1 = new Player1();
EventQueue.invokeLater(() -> player1.setVisible(true));

EventQueue.invokeLater(() -> player1.setHwordText(modifiedWord));

このように、静的フィールドは必要ありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ローカルマシン上のJavaのUDPクライアントサーバー、クライアントプログラムが応答しない

分類Dev

JavaのUDPクライアントサーバー平均コンピューティングプログラム

分類Dev

Javaのクライアント/サーバープログラム-ストリーム

分類Dev

シンプルなJavaクライアント/サーバープログラム

分類Dev

複数のクライアントからサーバーへのJava通信プログラム

分類Dev

単純なサーバークライアントプログラムのEOF-およびSocketException

分類Dev

このjava nioプログラムでクライアントがサーバーに接続できないのはなぜですか?

分類Dev

サーバークライアントチャットプログラム

分類Dev

SwingGUIを使用したシンプルなクライアントサーバープログラム

分類Dev

JavaでのWebSocketプログラミング:クライアントサーバー通信の問題

分類Dev

Javaでクライアントサーバープログラムを実行する

分類Dev

c(TCP)の単一サーバープログラムを備えた複数のクライアント

分類Dev

このクライアントサーバープログラムの使用方法は?

分類Dev

Javaソケットサーバー-クライアント2ウェイチャットプログラムが予期した結果を取得しない

分類Dev

最終的に例外でブロックがクライアントサーバープログラムで機能しないのはなぜですか?

分類Dev

クライアントサーバーJavaプログラムを使用して2台のコンピューターを接続する方法

分類Dev

ソケットプログラミング-シンプルなクライアント/サーバー

分類Dev

ionicアプローチとwindowsアプローチ間のリアルタイムクライアントサーバーソケットプログラミングのソリューション(asp.mvc、iisなど)

分類Dev

サーバーとクライアントを異なるプラットフォームでプログラムできますか?

分類Dev

単一サーバープログラムのマルチクライアントのソケットを閉じたくない

分類Dev

クライアント/サーバープログラミング

分類Dev

単純なクライアントサーバーソケットプログラム用のPrintWriterおよびOutputStream

分類Dev

aio_writeは私の単純なクライアント/サーバープログラムでは機能しません

分類Dev

UDPコネクションレス型クライアントの固定ポートでクライアントプログラムを実行する方法-Javaのサーバーペア

分類Dev

クライアント-コアJavaを学習した後のサーバーデータベースプログラミング

分類Dev

Java:Eclipseからのデータグラムクライアントとサーバーの作成

分類Dev

RaspberryPiでBLEサーバーとクライアントの両方をプログラミングする

分類Dev

TCPクライアントプログラムがサーバーに接続しません

分類Dev

サーバー クライアント プログラムで DataOutputStream が優先される理由

Related 関連記事

  1. 1

    ローカルマシン上のJavaのUDPクライアントサーバー、クライアントプログラムが応答しない

  2. 2

    JavaのUDPクライアントサーバー平均コンピューティングプログラム

  3. 3

    Javaのクライアント/サーバープログラム-ストリーム

  4. 4

    シンプルなJavaクライアント/サーバープログラム

  5. 5

    複数のクライアントからサーバーへのJava通信プログラム

  6. 6

    単純なサーバークライアントプログラムのEOF-およびSocketException

  7. 7

    このjava nioプログラムでクライアントがサーバーに接続できないのはなぜですか?

  8. 8

    サーバークライアントチャットプログラム

  9. 9

    SwingGUIを使用したシンプルなクライアントサーバープログラム

  10. 10

    JavaでのWebSocketプログラミング:クライアントサーバー通信の問題

  11. 11

    Javaでクライアントサーバープログラムを実行する

  12. 12

    c(TCP)の単一サーバープログラムを備えた複数のクライアント

  13. 13

    このクライアントサーバープログラムの使用方法は?

  14. 14

    Javaソケットサーバー-クライアント2ウェイチャットプログラムが予期した結果を取得しない

  15. 15

    最終的に例外でブロックがクライアントサーバープログラムで機能しないのはなぜですか?

  16. 16

    クライアントサーバーJavaプログラムを使用して2台のコンピューターを接続する方法

  17. 17

    ソケットプログラミング-シンプルなクライアント/サーバー

  18. 18

    ionicアプローチとwindowsアプローチ間のリアルタイムクライアントサーバーソケットプログラミングのソリューション(asp.mvc、iisなど)

  19. 19

    サーバーとクライアントを異なるプラットフォームでプログラムできますか?

  20. 20

    単一サーバープログラムのマルチクライアントのソケットを閉じたくない

  21. 21

    クライアント/サーバープログラミング

  22. 22

    単純なクライアントサーバーソケットプログラム用のPrintWriterおよびOutputStream

  23. 23

    aio_writeは私の単純なクライアント/サーバープログラムでは機能しません

  24. 24

    UDPコネクションレス型クライアントの固定ポートでクライアントプログラムを実行する方法-Javaのサーバーペア

  25. 25

    クライアント-コアJavaを学習した後のサーバーデータベースプログラミング

  26. 26

    Java:Eclipseからのデータグラムクライアントとサーバーの作成

  27. 27

    RaspberryPiでBLEサーバーとクライアントの両方をプログラミングする

  28. 28

    TCPクライアントプログラムがサーバーに接続しません

  29. 29

    サーバー クライアント プログラムで DataOutputStream が優先される理由

ホットタグ

アーカイブ