Постоянно получайте java.io.NotSerializableException - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть класс с именем Parameters, который реализует Serializable.Но когда я использую writeObject (p), я получил сообщение об ошибке.Я проверил статус р.Это говорит, что это уже Сериализовано.

package Server.Interface;
import java.util.*;
import java.io.Serializable;

public class Parameters implements Serializable{
    private String command;
    private String location;
    private ArrayList<Integer> numbers;
    public Parameters(String command, String location,ArrayList<Integer> numbers) {
        this.command = command;
        this.location = location;
        this.numbers = numbers;
}

    public String getCommend() {
        return command;
    }

    public void setCommend(String c) {
        this.command = c;
    }

    public String getLocation() {
        return location;
    }

    public void setNumbers(ArrayList<Integer> numbers) {
        this.numbers = numbers;
    }
}

Код клиента:

public void sendMessage(Parameters p) {
    try {
        if(p instanceof Serializable){
            System.out.println("can be serialized");
        }
        ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
        oos.writeObject(p);
        InputStream is=socket.getInputStream();
        int attempts = 0;
        while(is.available() == 0 && attempts < 1000)
        {
             System.out.println(attempts);
             attempts++;
             try {
                 Thread.sleep(10);
             }
             catch (InterruptedException e) {
                    e.printStackTrace();
             }
        }
        System.out.println("============================");
        BufferedReader br=new BufferedReader(new InputStreamReader(is));
        System.out.println("============================");
        String info=null;
        while((info=br.readLine())!=null&&info.length()>0){
            System.out.println(info);
            break;
        }
    }
    catch (IOException e) {
        System.out.println("IOError");
        e.printStackTrace();
    }
}

Это сообщение:

can be serialized
IOError
java.io.NotSerializableException: Client.TCPClient

В нем четко сказано, что объект сериализован.Но writeObject (p) не работает.Я также попытался установить для массива p значение null, и оно прошло.Но ArrayList сериализуем по умолчанию, верно?Это не должно влиять на сериализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...