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

API standards et tierces Java Discussion :

[RMI] ClassNotFoundException que je ne comprends tjs pas


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut [RMI] ClassNotFoundException que je ne comprends tjs pas
    J'avais déjà fait un post à ce sujet mais après différents tests, je ne comprends toujours pas alors je viens poster de nouveau en mettant quelques précisions :

    J'ai fait un test avec le strict minimum que voici :

    Tous mes fichiers sont dans le default package.

    J'ai une classe Balle (j'ai pris ce nom au hasard) dans Balle.java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Balle extends UnicastRemoteObject implements IBalle{
    	protected Balle() throws RemoteException {
    		super();
    	}
    	int i;
    	public void setI(int i) throws RemoteException {
    		this.i=i;
    	}
    	public int getI() throws RemoteException {
    		return i;
    	}
    }
    l'interface implémentée est la suivante : IBalle.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface IBalle extends Remote {
    	public void setI(int i) throws RemoteException;
    	public int getI() throws RemoteException;
    }

    Et une classe pour tester que voici (Test.java) :
    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
    public class Test {
    	public static void main(String[] args) {
    		try {
    			IBalle b = new Balle();
    			Naming.rebind("huhu",b);
    			IBalle bb = (IBalle) Naming.lookup("//127.0.0.1/huhu");
    		} catch (RemoteException e) {
    			e.printStackTrace();
    		} catch (MalformedURLException e) {
    			e.printStackTrace();
    		} catch (NotBoundException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Je compile, je fais mon rmic Balle, les skel et stubs sont bien générés, je lance rmiregistry, tout est ok.

    Mais lorsque je lance, j'ai l'exception suivante :
    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.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    	java.lang.ClassNotFoundException: Balle_Stub
    	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:352)
    	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:207)
    	at sun.rmi.transport.Transport$1.run(Transport.java:148)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    	at java.lang.Thread.run(Thread.java:534)
    	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:350)
    	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    	at java.rmi.Naming.rebind(Naming.java:160)
    	at Test.main(Test.java:24)
    On m'a suggéré d'utiliser codebase, ce que j'ai fait de la façon suivante (le chemin est bon) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Djava.rmi.server.codebase=file:/C:\eclipse\workspaces\perso\teste Test
    mais toujours là même exception.

    voilà, tout les éléments sont là. Je sèche totalement depuis hier. Je béni celui qui trouvera le problème ;)

    merci.

    Satch

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    il n'y a pas une option particulière a mettre en ligne de commande pour compiler les stubs ?
    Il me semble avoir eu ce problème

    genre rmic -v1.1 ou rmic -v1.2

  3. #3
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    je viens de trouver ... mais c'est bizarre parce que ça marchait avant.

    Le problème vient du lancement de rmiregistry.

    Avant, j'allais dans le repertoire bin du jdk et je le lançais en double cliquant dessus. Mais là, comme par magie ça ne marchait plus. Il faut le lancer en ouvrant une console et :
    J'ai trouvé par pur hasard... Maintenant je me demande pourquoi mon ancienne façon de faire ne marche plus maintenant. (peut-être a cause de windows XP ??)

    en tout cas, merci à ceux qui ont cherché un peu là dessus :)

    Satch

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 29
    Points : 34
    Points
    34
    Par défaut
    Je sais que j'ai déjà eut des problémes de ce genre. Ca provenait de versions différentes des jdk. Entre celles de JBuilder, eclipse ou du jdk de sun, il y avait autant de rmiregsitry. Je pense qu'au final il devait se prendre les pieds dans le tapis à cause de ça.

    Tu as quoi dans ton path, la version lancée en ligne de commande et l'autre sont bien les mêmes ?

  5. #5
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    L'inconvénient majeur de RMI est son manque de souplesse. Je m'explique : si tu lance le rmiregistry depuis un logiciel comme Eclipse ou NetBeans, tu devras lancer ton appli depuis Eclipse ou NetBeans. Depuis une ligne de commande est la meilleure solution. En double-cliquant dessus, ça ne marche pas si tu veux ensuite lancer ton appli en ligne de commande. Si tu veux programmer en RMI, fais-le sous Linux. Sous Windows, c'est définitivement trop casse-couilles, essentiellement si tu veux l'intégrer à un site Web (ce qui est une option très envisageable puisque RMI fonctionne comme un Webservice). Il faut rajouter une tonne de paramètres pour lancer l'appli serveur, et l'intégration à un programme JSP par exemple ne fonctionne pas telle quelle, ou alors je n'ai en tout cas toujours pas trouvé la solution. Voilà, j'ai assez déversé ma bile.

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

Discussions similaires

  1. std ::vector [erreur que je ne comprend pas]
    Par aaronw dans le forum SL & STL
    Réponses: 8
    Dernier message: 05/03/2006, 21h00
  2. [Débutant] Message d'erreur que je ne comprends pas
    Par Le Furet dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2006, 17h37
  3. [PostGreSQL] une erreur que je ne comprends pas
    Par flo78 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/02/2006, 10h18
  4. [thread][methodologie]Quelque chose que je ne comprends pas!
    Par norkius dans le forum Général Java
    Réponses: 5
    Dernier message: 16/03/2005, 14h01
  5. [Rave] un message que je ne comprends pas
    Par Clotilde dans le forum Rave
    Réponses: 2
    Dernier message: 30/09/2003, 21h46

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