Исключение: 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[][]
) система не знает, как это сделать...
Я надеюсь, что это ясно, что вам нужен сериализатор объекта с обеих сторон.
Удачи...
Проверьте, что вы отправляете с сервера через тело. Это тело содержит недопустимые символы. Это причина, по которой вы получаете приведение к исполнению. Я застрял в тот же день в день, а затем решил, изменив тело сообщения.