2013-03-31 100 views
0

我做了一個應用程序,可以安全地在系統之間傳輸文件... 所有工作正常...除了在接收端。它示出了異常: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()需要String並返回int [] []。 security.decrypt反之亦然。 請幫幫我。

+0

'output1'對象的類型是什麼? –

+0

其ObjectOutputStream –

+1

爲什麼你把它轉換成int [] []?你不能staright去調用類似output1.writeObject((security.encrypt(new String(buf,「ISO-8859-1」));? – Lokesh

回答

2

接縫對我來說,在服務器端writeObject,將您int[][]投以某種object,以便它可以發送,那麼你當然不容在客戶端與(int[][])系統投對象不知道該怎麼做...

我希望這是明確的,你需要的是一個對象序列化器在雙方。

祝你好運...

+1

ObjectInputStream和ObjectOutputStream執行相同的操作 –

+0

也許嘗試使用Integer而不是int,因爲Integer不是一個本地類型,而且不是轉換,而是像新的Integer(object)希望它有幫助 – saykou

+0

花花公子會創建一個Integer對象,而不是一個int值....這是預期的安全.decrypt() –

0

檢查你有什麼從服務器發送到身體。該正文包含無效字符。這就是你得到演員exaction的原因。我在一天中遇到了同樣的問題,然後我解決了它改變消息正文。

相關問題