この質問が何度も出されていることは知っていますが、どの回答も問題を解決するのに役立ちます. 私は Java (netbeans) を使用して IM プログラムに取り組んでいます...
クライアント側に「メッセージ」というクラスがあり、そのクラスをクライアントからサーバーに渡し、サーバーにはクライアント側のメッセージクラスに似たメッセージというクラスがあります。
私は ObjectInputStream / ObjectOutputStream を使用してサーバーとの間でクラスを送受信し、サーバープログラムは ClassNotFound 例外を通知し、クライアント側に存在するメッセージ クラスをポイントします。
この問題を解決する方法。
ポイント: - Class Message は両側に存在し、見逃すことはありません! - クラスではなくオブジェクトを渡します - クラスはシリアライズ可能です - キャストを使用しました:
msg= (message) SomeObjectInputStream.ReadObject();
正確なエラー メッセージは次のとおりです。
2013 年 10 月 5 日 4:32:40 PM EIQserver.EIQserver 実行 SEVERE: null
java.lang.ClassNotFoundException: RandomSend.Message
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:622)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at EIQserver.EIQserver.run(EIQserver.java:55)
私のクラス:
public class Message は Serializable {...} を実装します
エラーはここを指しています:
fromuser=(Message) OIS.readObject();
重要:クライアントクラスの同じファイルとサーバークラス(別のファイルではなく)でクラスを定義しましたが、それでも同じ例外が発生します!!!!