Android 앱에서 Java 애플리케이션으로 Object를 보내는 데 문제가 있습니다. 정확히 동일한 직렬화 가능 클래스가 있습니다.Android 직렬화 - 자바 역 직렬화
I는 수신 측에이 코드를 사용하여 다른 하나에 하나의 자바 위해 appliction에서 개체를 보낼 때 그것은 완벽하게 작동합니다 :
@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();
}
}
을하지만 난에 동일한 작업을 수행 할 때 그렇게하려는 곡을 전송 (안드로이드 안드로이드에서 내가 ClassCastException를 받고 있어요) 자바 객체 :
[Lcom.audiobuddy.serializables.Song; cannot be cast to com.audiobuddy.serializables.Song
먼저 나는 패키지 이름이 달랐다 때문에 그것이라고 생각, 그래서 양쪽에 "com.audiobuddy.serializables"에 변경. 하지만 내 오류, 안드로이드 애플 리케이션을 보면, "[L"앞에 ";"추가 패키지를 변경 양쪽에 다시 ...
의 노래 - 클래스가 동일한 serialVersionUID의
감사합니다,하지만 :
당신은 아마 이런 식으로 뭔가로
ois.readObject();
- 라인을 변경해야합니다. 난 둘 다 자바와 안드로이드 자바 응용 프로그램을 보낼 수 있어야합니다 – dumazy@ dumazy 그냥 하나의 노래를 직렬화하거나 항상 노래 배열을 직렬화해야합니다. 이제 Java에서 하나의 노래를 직렬화하고있을 것입니다. 그러나 Android 코드에서 일련의 노래를 직렬화하고 있습니다. –
내 자바 발신자가 하나의 객체 대신 배열을 보내고 완벽하게 작동합니다. 감사합니다! – dumazy