0

この質問が何度も出されていることは知っていますが、どの回答も問題を解決するのに役立ちます. 私は 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();

重要:クライアントクラスの同じファイルとサーバークラス(別のファイルではなく)でクラスを定義しましたが、それでも同じ例外が発生します!!!!

4

2 に答える 2