0
我在從我的Android應用程序向我的Java應用程序發送對象時遇到了一些麻煩。 我有一個完全相同的可序列化類。Android序列化 - java反序列化
它完美,當我從一個Java的機應用發送的對象使用在接收端的代碼另一個問題:
@Override
public void run() {
super.run();
while(true){
try{
if(datagramSocket!=null)datagramSocket.close();
datagramSocket = new DatagramSocket(PORT);
buffer = new byte[4096];
inPacket = new DatagramPacket(buffer, buffer.length);
datagramSocket.receive(inPacket);
InetAddress clientAddress = inPacket.getAddress();
int clientPort = inPacket.getPort();
ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(bais));
Song song = (Song) ois.readObject();
song.setClientIP(inPacket.getAddress());
dc.addSong(song);
datagramSocket.close();
}catch (IOException e) {
System.out.println("IOException on receiving song: " + e);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是當我嘗試做同樣的機器人(所以發送曲 - 從對象的Android對Java)我得到一個ClassCastException:
[Lcom.audiobuddy.serializables.Song; cannot be cast to com.audiobuddy.serializables.Song
首先,我認爲這是因爲包的名字是不同的,所以我改成了兩邊「com.audiobuddy.serializables」。但我看着我的錯誤,Android應用程序,更改了軟件包,在前面添加了「[L」和「;」在後面...
兩側的松類具有相同的serialVersionUID
感謝那些工作,但......現在我得到了同樣的問題,當我試圖從Java發送到Java。我需要能夠將它從java和android發送到java應用程序 – dumazy
@dumazy只要確保您要麼總是序列化一首歌曲,要麼總是序列化一個歌曲數組。現在,您可能會使用Java序列化單個歌曲,但是您會在Android代碼中序列化一組歌曲。 –
我讓我的java發送者發送一個數組而不是一個單獨的對象,它完美的工作,謝謝! – dumazy