problème de liaison d'un objet distant

problème de liaison d'un objet distant - Java - Programmation

Marsh Posté le 19-03-2011 à 17:54:27    

Bonjour,
 
Lorsque j'exécute le projet rmi alors j'ai le message suivant:

Citation :


init:
EJB.init:
EJB.deps-jar:
EJB.compile:
EJB.library-inclusion-in-archive:
Building jar: C:\Documents and Settings\etudiant\Mes documents\NetBeansProjects\EJB\dist\EJB.jar
EJB.dist:
deps-jar:
compile-single:
Serveur : Construction de l’implémentation
Erreur de liaison de l'objet
java.rmi.server.ExportException: remote object implements illegal remote interface; nested exception is:
java.lang.IllegalArgumentException: illegal remote method encountered: public abstract boolean inscriptionclient.IServiceInscription.inscrit(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String)
debug-single:
BUILD SUCCESSFUL (total time: 9 seconds)


 
J'ai essayé de générer les stubs en tapant la commande dos suivante:

Citation :

C:\Documents and Settings\etudiant\Mes documents\NetBeansProjects\InscriptionClient\build\jar>rmic inscriptionclient.ServiceInscription


 
alors j'ai le message suivant:
 

Citation :

error: Invalid class file format in .\inscriptionclient\ServiceInscription.class. The major.minor version '50.0' is too recent for this tool to understand.
error: Class inscriptionclient.ServiceInscription not found.
2 errors


 
Pour le projet RMI :
- voici le code de main:
 

Code :
  1. package inscriptionclient;
  2. import java.rmi.Naming;
  3. public class Main {
  4.     public static void main(String[] args) {
  5.         // TODO code application logic here
  6.         try {
  7.             java.rmi.registry.LocateRegistry.createRegistry(1099);
  8.             System.out.println("Serveur : Construction de l’implémentation" );
  9.             ServiceInscription nam = new ServiceInscription();
  10.             System.out.println("Service lié dans RMIregistry" );
  11.             Naming.rebind("rmi://localhost:1099/Inscrit", nam);
  12.         } catch (Exception e) {
  13.             System.out.println("Erreur de liaison de l'objet" );
  14.             System.out.println(e.toString());
  15.         }
  16.     }
  17. }


 
- voici le code de ServiceInscription.java:
 

Code :
  1. package inscriptionclient;
  2. import java.rmi.*;
  3. import java.rmi.server.*;
  4. import java.util.Properties;
  5. import javax.naming.InitialContext;
  6. import javax.naming.NamingException;
  7. import javax.rmi.PortableRemoteObject;
  8. import tp3.ejb3.beans.inscriptonRemote;
  9. public class ServiceInscription extends UnicastRemoteObject implements IServiceInscription {
  10.     public ServiceInscription() throws RemoteException {
  11.         super();
  12.     }
  13.     @Override
  14.     public boolean inscrit(String nom, String prenom, int age, String email, String login, String password) {
  15.         InitialContext ctx;
  16.         boolean resutlat = false;
  17.         try {
  18.             Properties props = new Properties();
  19.             props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory" );
  20.             props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming" );
  21.             props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl" );
  22.             props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost" );
  23.             props.setProperty("org.omg.CORBA.ORBInitialPort", "3700" );
  24.             ctx = new InitialContext(props);
  25.             Object ref = ctx.lookup("tp3.ejb3.beans.inscription" );
  26.             inscriptonRemote ejb = (inscriptonRemote) PortableRemoteObject.narrow(ref, inscriptonRemote.class);
  27.             resutlat = ejb.inscrit(nom, prenom, age, email, login, password);
  28.         } catch (NamingException ex) {
  29.             ex.printStackTrace();
  30.         } finally {
  31.             return resutlat;
  32.         }
  33.     }
  34. }


 
- voici le code de IServiceInscription.java:
 

Code :
  1. Package inscriptionclient;
  2. import java.rmi.Remote;
  3. public interface IServiceInscription extends Remote {
  4.     public boolean inscrit(String nom, String prenom, int age, String email, String login, String password);
  5. }

Quel est le problème ?
 
 
Merci en avance pour vos aides.

Reply

Marsh Posté le 19-03-2011 à 17:54:27   

Reply

Marsh Posté le 20-03-2011 à 14:45:21    

msedirim a écrit :


Citation :

error: Invalid class file format in .\inscriptionclient\ServiceInscription.class. The major.minor version '50.0' is too recent for this tool to understand.
error: Class inscriptionclient.ServiceInscription not found.
2 errors


Quel est le problème ?
 
 
Merci en avance pour vos aides.


 
Il me semble que ce genre de message d'erreur apparaît quand la machine virtuelle utilisée pour lancer une classe est plus ancienne que le compilateur qui l'a générée (par exemple tu as compilé sous Java 6 et lancé l'applic sous Java 5). Ici peut-être que le compilateur rmic n'est pas le "bon".

Reply

Marsh Posté le 21-03-2011 à 13:14:31    

Bonjour,
 
Je travaille avec NetBeans IDE 6.9.1 avec jdk1.6.0_20 et jre6
Quel est le bon compilateur ?

Reply

Marsh Posté le 21-03-2011 à 14:25:50    

msedirim a écrit :

Bonjour,
 
Je travaille avec NetBeans IDE 6.9.1 avec jdk1.6.0_20 et jre6
Quel est le bon compilateur ?


 
 
Je ne voulais pas dire qu'il y a un bon et un  mauvais compilateur, mais juste que tu dois t'assurer que la machine virtuelle, le compilateur rmic et le compilateur javac soient de la même version (surement que la condition est trop restrictive, mais au moins là on garanti que ça marche). T'as essayé de faire les choses "à la main" càd sans utiliser netbeans, mais juste un shell (fenêtre DOS si tu es sous windows) ?

Reply

Marsh Posté le 21-03-2011 à 14:48:25    

Citation :

T'as essayé de faire les choses "à la main" càd sans utiliser netbeans, mais juste un shell (fenêtre DOS si tu es sous windows) ?


 
OK mais quelles commandes à exécuter ?

Message cité 1 fois
Message édité par msedirim le 21-03-2011 à 14:48:36
Reply

Marsh Posté le 21-03-2011 à 16:55:09    

msedirim a écrit :

Citation :

T'as essayé de faire les choses "à la main" càd sans utiliser netbeans, mais juste un shell (fenêtre DOS si tu es sous windows) ?


 
OK mais quelles commandes à exécuter ?


 
http://download.oracle.com/javase/ [...] index.html
 
Je ne connais pas netbeans, mais peut-être qu'il a son propre compilateur de stub (rmic) et que le problème vient de là. C'est la raison pour laquelle tu dois essayer de voir ce qui se passe si tu appliques les différents pas dans un shell. Mais pour commencer tu peux chercher combien de programmes appellés "rmic" tu as sur ton boulier.


Message édité par leonhard le 21-03-2011 à 17:24:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed