异常:java.lang.ClassCastException:[B无法强制转换为java.io.ObjectStreamClass

时间:2013-03-31 13:12:05

标签: java classcastexception objectinputstream

我制作了一个可以在系统之间安全传输文件的应用程序...... 一切正常......除了收到结束。它显示了一个

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()接受String并返回int [] []。 security.decrypt反之亦然。 请帮帮我。

2 个答案:

答案 0 :(得分:2)

接触我,在服务器端writeObject,将你的int[][]演员阵容转换为某种object以便它可以发送,当然你不能投客户端的对象(int[][])系统不知道如何做到这一点......

我希望很清楚,你需要的是双方的对象序列化器。

祝你好运......

答案 1 :(得分:0)

检查您通过正文从服务器发送的内容。该正文包含无效字符。这就是你得到表演的原因。我在白天遇到了同样的问题然后我解决了它改变了消息体。