java.lang.ClassNotFoundException: com.chat.data.SendTalkData
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at com.chat.net.ChatServer$ClientHandler.run(ChatServer.java:124)
[접속자] 127.0.0.1
java.io.StreamCorruptedException: invalid stream header: 434E584E
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:782)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
at com.chat.net.ChatServer$ClientHandler.run(ChatServer.java:121)
해결방법은 간단하다.
ObjectInputStream 및 ObjectOutputStream으로 서로 주고 받으려는 클래스가 위치한 패키지 이름이 서버와 클라이
언트에서 서로 같은지를 확인해보자.
나의 경우 안드로이드 클라이언트에서는 com.example.pmbs_client 패키지 내에 Header 클래스가 위치해 있었고,
자바서버에서는 server 패키지 내에 Header 클래스가 위치해 있었다.
그래서 서버와 클라이언트 모두 각각 shared 라는 패키지를 별도로 만들고 그 안에 Header 클래스를 넣어 두니 문제
가 해결되었다.
p.s) 참고로 ObjectInputStream 및 ObjectOutputStream으로 객체를 보내고자 할때 해당 클래스는 Serializable을 구
현해야 한다.
'phone lang > Android' 카테고리의 다른 글
[안드로이드][이클립스][서버] Some projects cannot be imported because they already exist in the workspace (0) | 2016.03.09 |
---|---|
[안드로이드 참고] 안드로이드 환경 세팅 (0) | 2016.03.08 |
소켓 ... (0) | 2016.03.02 |
[안드로이드] 안드로이드 키보드 가리기 업애기 / 키보드 보이기 (0) | 2016.03.01 |
리스트뷰 아이템 클리 (0) | 2016.03.01 |