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

Entrée/Sortie Java Discussion :

Javac RMI compilation avec multi-package


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 53
    Par défaut Javac RMI compilation avec multi-package
    Bonjour à tous,

    Je m'amuse avec RMI à ce moment là, j'ai une erreur au niveau de compilation de multi-package.
    J'ai un dossier ../src qui contient 3 dossier du projet Server, Client, CommonFiles qui contiennent chacun leurs classes d'implementation.

    ../src/Server/
    HelloServer.class (package Server; )

    ../src/Client/
    HelloClient.class (package Client; )

    ../src/CommonFiles/
    HelloInterface.class (package CommonFiles; )
    HelloRemote.class (package CommonFiles; ) (object remote)

    Quand je compiles avec javac, je poursuis comme ceci; (un rmiregistry est déjà en cours)

    $ cd ../src/CommonFiles
    $ javac -classpath ../ HelloRemote.java
    $ rmic -classpath ../ CommonFiles.HelloRemote

    $ cd ../src/Server
    $ javac -classpath ../ HelloServer.java

    cd ../src/Client
    $ javac -classpath ../ HelloClient.java


    La compilation est sans erreur, maintenant je veux lancer le serveur:

    $ cd ../src/Server
    $ java -classpath ../ -Djava.security.policy=policy.txt Server.HelloServer

    Et là ca craque, erreur:

    $ java -classpath ../ -Djava.security.policy=policy.txt Server.HelloServer
    HelloServer: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: CommonFiles.HelloInterfacejava.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: CommonFiles.HelloInterface
    .....
    J'espère que j'ai été assez clair Quelqu'un saura pourquoi cette erreur?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 53
    Par défaut
    J'ai trouvé plusieurs explication, après plusieurs essai j'y suis presque y arriver:

    je crée un projet sous le nom "exempleRMI". Ensuite je crée trois dossier comme il fait eclipse

    /exempleRMI/bin
    /exempleRMI/lib
    /exempleRMI/src

    ensuite je place mes classes dans /exempleRMI/src sous différent répertoire:

    /exempleRMI/src/Client {HelloClient.java}
    /exempleRMI/src/CommonFiles {HelloInterface.java, HelloRemote.java}
    /exempleRMI/src/Server {Server.java}

    Je démarre le rmiregistry & ,En suite je compile les un après les autre:

    CommonFiles:
    javac -classpath /exempleRMI/bin:/exempleRMI/lib/* -sourcepath /exempleRMI/src -d /exempleRMI/bin $repprojet/src/CommonFiles/*.java
    |
    ->Ca me crée un nouveau dossier dans bin /exempleRMI/bin/CommonFiles


    Server:
    javac -classpath /exempleRMI/bin:/exempleRMI/lib/* -sourcepath /exempleRMI/src -d /exempleRMI/bin $repprojet/src/Server/*.java
    |
    ->Ca me crée un nouveau dossier dans bin /exempleRMI/bin/Server


    RMI: Je génére le stub et skeleton
    rmic -classpath /exempleRMI/bin/:/exempleRMI/lib/* -sourcepath /exempleRMI/src -d /exempleRMI/bin CommonFiles.HelloRemote
    |
    ->Ca me crée le HelloRemote_Stub.class dans /exempleRMI/bin/CommonFiles

    Maintenat je veux juste démarrer le serveur avec son texte de securité
    java -classpath /exempleRMI/bin:/exempleRMI/lib/* -Djava.security.policy=/exempleRMI/src/Server/policy.txt Server.HelloServer


    Erreur:
    $ java -classpath $repprojet/bin:$repprojet/lib/* -Djava.security.policy=$repprojet/src/Server/policy.txt Server.HelloServer
    HelloServer: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: CommonFiles.HelloRemote_Stubjava.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: CommonFiles.HelloRemote_Stub
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
    Pourtant le stub a été bien généré :/
    Y aura quelqu'un pour m'aider svp ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 212
    Par défaut
    à partir java 1.5 vous n'avez pas besoin de générer le stub le skeleton.
    concernant le problème: essayer de lancer rmiregistry en utilisant le repertoire:/exempleRMI/bin

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 53
    Par défaut
    Voila j'ai résolu mon problème. Merci win_ubuntu de m'avoir répondu, comme ça je me sens pas seul ^^

    Le problème n'était pas le stub, oui, tu as raison qu'on n'a plus besoin de stub avec java 1.6 mais c'était plutôt au niveau de la compilation du projet écrit en package en utilisant la commande javac au terminal.

    Alors, j'ai 3 package qui sont dans le dossier src (écris en eclipse):

    /src
    |_client (package client; )
    |_serveur (package serveur; )
    |_commun (package commun

    Je code avec Eclipse mais compile avec javac tu vois l'idée ^^
    Bon donc pour la compilation avec java:
    -Je me positionne dans src
    $cd /src

    -je compile le serveur
    $javac serveur/serveur.java

    -je compile l'interface et le remote object
    $javac commun/interface.java remote.java

    -je me positionne dans le dossier engine
    $cd /src/engine

    -je lance le rmiregistry avant de lancer rmic
    $rmiregistry &

    -je me repositionne dans src
    $cd ../

    -je crée le stub et skeleton
    $rmic commun.remote

    -maintenant je vais pouvoir lancer le serveur
    $java serveur.serveur
    ou
    $java -Djava.security.policy=policy.txt serveur.serveur (si on accès au réseau)

    -ensuite complier et lancer le client de la même façon

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/10/2012, 09h31
  2. probleme lors de la compilation avec javac
    Par Th3dJoBiN dans le forum Langage
    Réponses: 3
    Dernier message: 12/12/2006, 23h16
  3. Comment compiler avec javac des jar sans utiliser -cp
    Par Battosaiii dans le forum Langage
    Réponses: 7
    Dernier message: 06/10/2006, 17h03
  4. Réponses: 27
    Dernier message: 23/03/2006, 07h33
  5. [JB9][EJB]Compiler avec Make ou javac ?
    Par _gtm_ dans le forum JBuilder
    Réponses: 4
    Dernier message: 11/07/2003, 15h59

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