salut,
j'ai un pb avec une comunication par socket entre deux machines l'une comme client et l'autre serveur qui envoie des fichiers aux client ,mais au niveux client quand je recois l'objet et essayé de déserialisé avec la classe Bean qui situé au machine serveur pour sérialisé et au niveaux machine client pour déserialisé elle m'affiche le problème suivant au niveau client:
java.lang.ClassNotFoundException:packageMachineServer.Bean at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at java.io.ObjectInputStream.resolveClass(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at packageMachineclient.Client.<init>(Clientstream.java:16) at packageMachineclient.Client.main(Clientstream.java:37)
la ligne 16 est:
Bean fileIO=(Bean)ois.readobject();
et voila mon code de seveur:
package packageMachineServer; import java.io.*; import java.net.*; public class Server{ public Server() { File[] filenvoye = new File[1]; filenvoye[0] = new File("/home/workspace/testEfile"); //sérialiser Bean files = new Bean(filenvoye); OutputStream os; ServerSocket socket; try { ObjectOutputStream oos; System.out.println("En ecoute ......."); socket = new ServerSocket(1024); Socket SsAccept; while(true){ SsAccept = socket.accept(); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! os = SsAccept.getOutputStream(); oos = new ObjectOutputStream(os); //envoyer les donne oos.writeObject(files); System.out.println("les donne sont envoyer;;;;;;;;"); } //os.close(); //oos.close(); //SsAccept.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch(IOException exp){ exp.printStackTrace(); } //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! } public static void main(String[] args) { new Server(); } } et ma classe au niveux client est: [code]package packageMachineclient; import java.io.*; import java.net.*; public class Client { public Client() { Socket socket; try { socket = new Socket("192.186.0.133",1024); //On ouvre notre flux d'entrée InputStream is = socket.getInputStream(); ObjectInputStream ois = new ObjectInputStream(is); //On cast l'objet pour en retirer les informations Bean fileIO = (Bean)ois.readObject(); String texte = new String(" "); for (int i=0;i<fileIO.lenght();i++){ fileIO.redfile(i); //Affiche la liste des fichiers qui ont été envoyés System.out.println("Le fichier est :"+fileIO.getFile(i).getPath()); texte+=fileIO.getFile(i).getPath(); texte+='\n'; } ois.close(); is.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { System.out.println("voila mon problem"+e.getCause()); e.printStackTrace(); } } public static void main (String []arg){ new Client(); } }
[/code]
et enfin pour la classe Bean de sérialisation:
import java.io.*; import java.net.*; public class Bean implements Serializable{ private static final long serialVersionUID = 1L; private File[] file; private int lenght; public Bean(File[] file) { super(); this.file = file; this.lenght=file.length; } public int lenght() { return lenght; } public File getFile(int i) { return file[i]; } }
Merci