méthode readobject throws ClassNotFoundException
Je suis en train de ramasser Java et je voulais tester autour avec Java client/serveur pour le client d'envoyer un simple objet de la définition même de la classe(Message) sur le serveur. Le problème est que j'ai continué à obtenir une ClassNotFoundException sur le côté serveur.
Je pense que le reste de l'codes semblent être bien parce que d'autres objets tels que la Chaîne peut passer sans problèmes.
J'ai eu deux différents netbeans projets dans différents endroits pour le client et le serveur.
Chacun d'entre eux ont leur propre copie de la classe de Message en vertu de leurs forfaits.
Message de la classe implémente Serializable.
Sur le côté client, je tente d'envoyer un Message à l'objet à travers.
Sur le côté serveur, lors de l'appel de la méthode readObject, il semble être de trouver la classe de Message de la part du client du paquet à la place de lui-même. printStackTrace a révélé: "java.lang.ClassNotFoundException: client.Message" sur le côté serveur
Je n'ai même pas essayé de le jeter ou le stockage de l'objet reçu encore. Il ya quelque chose que j'ai laissé de côté?
OriginalL'auteur eruina | 2010-05-26
Vous devez vous connecter pour publier un commentaire.
Le nom du package et le nom de la classe doit être exactement la même dans les deux côtés. I. e. écrire une fois, de compiler une fois et de donner ensuite les deux côtés de la même copie. Ne pas séparer les
server.Message
etclient.Message
classes, mais un seulshared.Message
classe ou quelque chose comme ça.Si vous pouvez garantir le même package/nom de la classe, mais pas toujours quand il est exactement la même copie, alors vous devez ajouter un
serialVersionUID
terrain avec la même valeur de la ou des classe(s) en question.Il travaille maintenant! Merci~!! Enfin, je comprends enfin ce qui se passe
C'est TELLEMENT cool. J'ai été me casser la tête pendant des jours.
Fonctionne comme churm, 7 ans "N'ont pas de serveur distinct.Message et le client.Les classes de Message, mais une seule et même.La classe de Message ou quelque chose comme ça. Si vous pouvez garantir le même package/nom de la classe, mais pas toujours quand il est exactement la même copie,"
OriginalL'auteur BalusC
La raison en est, que les méthodes readObject() dans ObjectInputStream est pratiquement mis en œuvre comme:
OriginalL'auteur Daniel