Исключение: java.lang.ClassCastException: [B не может быть приведен к java.io.ObjectStreamClass

Я сделал приложение, которое может безопасно передавать файлы между системами... Все работает нормально... кроме как на стороне получения. это показывает

Exception in thread "New Connection" java.lang.ClassCastException: [B cannot be cast to java.io.ObjectStreamClass
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readArray(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readArray(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at network.FileDownload.secureFileReceive(FileDownload.java:341)
at network.FileDownload.run(FileDownload.java:240)
at java.lang.Thread.run(Unknown Source)

Строка клиентской программы (FileDownload), в которой возникает исключение:

String bb = security.decrypt((int[][]) input1.readObject());
byte[] buf = bb.getBytes("ISO-8859-1");

Серверная часть строк

output1.writeObject( security.encrypt(new String(buf,"ISO-8859-1")));

Здесь класс безопасности имеет методы для шифрования и дешифрования, где security.encrypt() принимает строку и возвращает int[][]. security.decrypt делает наоборот. Пожалуйста, помогите мне.

2 ответа

Мне кажется, что на стороне сервера writeObjectтрансформирует ваш int[][] приведен к какому-то object так что он может отправлять, тогда, конечно, вы не можете привести объект на стороне клиента с помощью (int[][]) система не знает, как это сделать...

Я надеюсь, что это ясно, что вам нужен сериализатор объекта с обеих сторон.

Удачи...

Проверьте, что вы отправляете с сервера через тело. Это тело содержит недопустимые символы. Это причина, по которой вы получаете приведение к исполнению. Я застрял в тот же день в день, а затем решил, изменив тело сообщения.

Другие вопросы по тегам