Socket et Serialisation - Java - Programmation
Marsh Posté le 22-06-2006 à 17:49:42
Y'a deux soucis.
Effectivement a la serialisation il faut que l'objet recu soit de la meme classe et de la meme version de classe (voir la doc la dessus, je sais plus exactement le nom de l'attribut qui donne le numero de version de classe). Mais ton probleme n'est pour l'instant pas là puisque ton exception n'a rien a voir avec la serialisation. Là ton erreur indique que le programme ne trouve pas la classe Echange au runtime.
Marsh Posté le 22-06-2006 à 18:00:01
D'accord, pourtant, quand je fais un Echange test = new Echange(50);
et ensuite un System.out.println(test.x); tout marche bien, il m'affiche 50, que ce soit dans le client ou dans le serveur .. ce qui signifie qu'il trouve bien la classe !!
Edit : j'ai trouvé ca sur le net :
Citation : Le contrôle de version |
C'est peut etre donc ca !
Saurais tu comment partager une meme classe dans 2 projets differents, sur netbeans?
Ou alors peut etre que je peux mettre le serveur et le client dans un meme projet, mais il me faudrais quand meme 2 executables , comment faire ca?
Marsh Posté le 22-06-2006 à 18:15:42
Si tu veux partager une classe entre deux projets, une solution, est de générer un .jar contenant les différentes classes comunes.
De cette maniére, tu seras sur que t'auras la même version des classes des deux côtés et en plus, tu seras certain que l'arborescence des classes sera respecter à l'identique.
Là, pour le moment, si tu ne veux pas mettre en place un systéme de .jar, tu peux créer un "package" nomé "testclient" dans le serveur afin de te retrouver avec la même classe dans le même paquage. En effet, en java, deux classes sont considéré comme différentes si elles n'ont pas le même nom ou qu'elles appartiennent à des packages différents.
Marsh Posté le 22-06-2006 à 23:32:50
Merci pour vos reponses !
Oui je pense que les RMI serait plus pratique mais bon je voudrais quand meme arriver a faire marcher ma serialisation ^^
Je vais essayer de mettre en place un systeme de .jar commun ca me parait une bonne idée !
Encore une question, dans un meme projet, peut on generer plusieurs executables ? car si je met mes classes, mon server et mon client dans le meme projet, et que j'arrive a generer uun executable server, et un executable client, ca marcherait aussi !
Merci !
Marsh Posté le 23-06-2006 à 09:31:53
oui, il faudrait mettre ton jar dans le classpath (option "-cp" je crois) et tu pourrais lancer les main des classes que tu veux.
mais ça semble un peu incohérent de mettre client et serveur dans la même archive...
Marsh Posté le 22-06-2006 à 17:28:03
Bonjour a tous,
voila j'essai de faire un petit programme de test simple pour tester l'echange d'objet entre un client et un serveur a l'aide de socket et je me heurte a un probleme.
L'objet que je tranfere est un objet de la classe Echange :
J'utilise netbeans et j'ai crée 2 projets, un projet testclient et un projet testserver. Dans chaque projet j'ai crée une classe Echange ou j'ai copié collé le meme code.
(je pense que le probleme vient de la : peut etre qu'a lexecution il considere que ce sont 2 classes differentes?)
Voila le code de la classe echange :
Voila le code du serveur :
Et enfin le code du client :
Donc a priori , rien de bien compliqué. Lorsque je lance le serveur et que je tente de me connecter dessus, j'obtiens l'erreur suivante: (c'est la ligne du readObject() qui la cause)
Je pense que cela vient donc des 2 fichiers differents pour designer la meme classe .. Peut on partager une classe entre 2 projets dans netbeans?
Peut etre que je me trompe totalement et que c'est autre chose ! Quelqu'un aurait t'il une idée?
Merci !
Message édité par Phraides le 22-06-2006 à 17:33:55