IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Envoi d'un objet d'Android à Java java.lang.ClassNotFoundException


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 28
    Points
    28
    Par défaut Envoi d'un objet d'Android à Java java.lang.ClassNotFoundException
    Bonjour je ne sais pas si je suis sur le bon forum ,mais bon
    j'effectue un programme simple qui envoi un objet ,depuis un terminal android a un programme java sur mon PC mais il y a une exception ,

    ici le programme java fais office de serveur ,pourtant en faisant un programme client java depuis mon PC le transfert se fais sans problème alors ou est l'erreur?
    je me le demande ,sur ce voici mes codes :

    serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    import test.arbre;
     
     
    public class Main {
     
    	public static void main(String[] args) throws IOException{
     
    		Personne objet = new Personne();
     
    		ServerSocket server = new ServerSocket(7777);
    		Socket socket;
    		ObjectInputStream in;
     
    		try{
    			socket = server.accept();
    			System.out.println("Connection effectué");
    			in = new ObjectInputStream(socket.getInputStream());
    			System.out.println("je suis la");
    			objet = (Personne) in.readObject();
    			System.out.println("Nom :"+ objet.getNom() + ", Prenom: " + objet.getPrenom() + ", Pseudo: " + objet.getPseudo() + ", Password: " + objet.getPassword());
    			in.close();
    			socket.close();
    		}
    		catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
     
    }

    le code client depuis android :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    package com.example.exemple;
     
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
     
    public class MainActivity extends Activity {
     
    	private Button btn;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
    		btn = (Button)findViewById(R.id.button1);
     
    		final Personne cahier = new Personne();
    		cahier.setId(1);
    		cahier.setPrenom("jean");
    		cahier.setNom("michel");
    		cahier.setPseudo("Pseudo");
    		cahier.setPassword("Password");
    		btn.setOnClickListener(new View.OnClickListener() {
     
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
     
    				Thread thread = new Thread(new Runnable(){
     
    					@Override
    					public void run() {
    						// TODO Auto-generated method stub
    						Socket socket;
    						ObjectOutputStream out;
    						try {
    							socket = new Socket("192.168.x.xx",7777);
    							Log.v("Conncetion","effectué");
    							out = new ObjectOutputStream(socket.getOutputStream());
    							out.writeObject(cahier);
    							out.flush();
    							socket.close();
     
    						}catch (UnknownHostException e) {
    				            e.printStackTrace();
    				        } catch (IOException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    					}
     
    				});
    				thread.start();
    			}
    		});
    	}
    et voici le code de ma classe personne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    import java.io.Serializable;
     
    public class Personne implements java.io.Serializable {
    	  private String nom ;
    	  private String prenom ;
    	  private int id ;
    	  private String pseudo;
    	  private String password;
     
    	  public Personne(){}
     
    	  public Personne(String nom, String prenom, int taille) {
    	    this.nom = nom;
    	    this.id = taille;
    	    this.prenom = prenom;
    	  }
     
    	  public String getNom() {
    	    return nom;
    	  }
     
    	  public void setNom(String nom) {
    	    this.nom = nom;
    	  }
     
    	  public int getId() {
    	    return id;
    	  }
     
    	  public void setId(int taille) {
    	    this.id = taille;
    	  }
     
    	  public String getPrenom() {
    	    return prenom;
    	  }
     
    	  public void setPrenom(String prenom) {
    	    this.prenom = prenom;
    	  }
     
    	  public String getPseudo(){
    			return pseudo;
    		}
    		public void setPseudo(String Pseudo){
    			this.pseudo = Pseudo;
    		}
     
    		//password
     
    		public String getPassword(){
    			return password;
    		}
    		public void setPassword(String Password){
    			this.password = Password;
    		}
    	}

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Et c'est quoi l'exception justement ? Donne nous un peu le stacktrace s'il te plait.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 28
    Points
    28
    Par défaut
    ok j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    java.lang.ClassNotFoundException: com.example.exemple.Personne
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	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.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 Main.main(Main.java:25)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 28
    Points
    28
    Par défaut
    alors ?

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    A première vue je n'ai pas d'idée.

    Est-ce que dans ta classe "personne" tu as bien mis la déclaration package ?
    (je ne la vois pas dans ton code mais c'est peut être une erreur dans le copier/coller) enfin ca devrait pas être ca si ca marche sur le pc
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 28
    Points
    28
    Par défaut
    j'ai réussi a faire le transfert de l'objet sous forme de liste String[]
    c'est quand même bizarre qu'il y ait un problème pareil.
    enfin si quelqu'un réussi en trouver l'origine je suis tout ouïe.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    de toutes façons, j'éviterais de jouer avec un Object stream, c'est vraiment pas top à utiliser, surtout entre deux jvm différentes

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Personnellement, j'utilise des HashMap<String, Serializable> quand je veux enregistrer quelque chose, avec Serializable étant autant que possible du type String, ou HashMap<String, Serializable>. Ensuite j'ai une classe qui permet de convertir ces HashMap en String pure type JSON et inversement. De cette façon, tes données sont compatibles avec presque tout ce que tu veux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/11/2010, 18h19
  2. Envoi d'un message Lotus Notes depuis Java
    Par link182 dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 25/03/2008, 11h05
  3. [XML] transport d'un objet entre C++ et JAVA
    Par jobigoud dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/08/2006, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo