Help, erreur quand je lance un serveur JAVA :

Fermé
Premier Prog : Aïe!! - 23 déc. 2003 à 21:58
 seif12 - 26 déc. 2009 à 14:40
Bonjour à tous,

voilà je viens de "réaliser" mon 1er pgm sous JAVA (RMI) avec Eclipse, il s'agit de "Hello World" et de sources que j'ai récupérer sur le net.

Je me contente uniquement de reprendre tout ça en comprenant, c'est pour un dossier que je dois rentre dans une semaine.

Je vois joins mon fichier HelloImpl.java

//HelloImpl.java
//
package rmidemo;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class HelloImpl extends UnicastRemoteObject implements
Hello{
private String name;
public HelloImpl(String s) throws RemoteException{
super();
name = s;
}
public String sayHello() throws RemoteException{
return "Hello World!";
}
public static void main(String args[])
{
//
//cré et installe un security manager
//
System.setSecurityManager(new RMISecurityManager());
try{
HelloImpl obj = new HelloImpl("HelloServer");
Naming.rebind("//localhost/HelloServer", obj);
System.out.println("HelloServer enregistré dans le registry");
}
catch (Exception e){
System.out.println("HelloImpl err: " + e.getMessage());
e.printStackTrace();
}
}
}


La compil se passe bien avec javacn après j'utilise rmic pour générer mes deux autres fichiers .class...mais au moment du lancement du serveur une erreur :

C:\DEMO\ECLIPSE\WORKSP~1\TEST>java HelloImpl
Exception in thread "main" java.lang.NoClassDefFoundError: HelloImpl


alors là!! je sais pas du tout où est le problème!!! C'est ma premiere approche à la prog et c'est vraiment pas évident car je suis seule. Si quelqu'un pouvait m'aider ça serait vraiment super sympa! Merci d'avance à tous

et Joyeuses Fetes

Gaëlle
A voir également:

6 réponses

1er prog : aïe!
24 déc. 2003 à 12:44
Re,

en fait j'ai modifié la ligne dans java.policy en mettant
permission java.net.SocketPermission "*", "accept, resolve";

ça ne passe toujours pas, j'ai trouvé un truc sur internet mais en fait je comprend pas ce qu'ils disent, enfin si faut créer des fichiers , lesquels...enfin je pense que toi tu devrai comprendre ce qu'il faut faire est ce que tu me décrypetr ceci???
voici l'url http://www.essi.fr/~blay/ENSEIGNEMENT/RMI/TPRMIEssi2.html
c'est à la partie "Le securityManager"
Franchement ça serait vraiment trop trop sympa!! un super cadeau de Noël ;)))

Gaëlle
1
silfaxu Messages postés 102 Date d'inscription jeudi 18 décembre 2003 Statut Contributeur Dernière intervention 6 février 2008 11
24 déc. 2003 à 08:10
Salut,

Tu n'es pas dans le bon répertoire.
Si tu regardes attentivement ta classe, tu verras que la première ligne comprend le mot-clé package suivi du nom du package (ici rmidemo).
Sans entrer dans les détails, ça signifie que le nom 'complet' de ta classe est rmidemo.HelloImpl et non HelloImpl.
D'ailleurs, l'arborescence physique sur ton disque doit refleter ce mécanisme : tu dois certainement avoir un répertoire rmidemo dans lequel ton fichier HelloImpl.class se trouve.

Pour exécuter ton fichier, tu dois donc te placer dans le répertoire parent (juste au dessus) du répertoire rmidemo et taper dans ta ligne de commande :
java rmidemo.HelloImpl

Et ça devrait fonctionner.

J'espere que ça t'aidera ..

sfx

---------------------------------------------------
Bonnes Fêtes de Fin d'Année à Tous
0
Premier Prog : Aïe!!
24 déc. 2003 à 11:16
Salut à tous et à sfx plus particulierement,
merci d'abord pour ta réponse car je suis désperée ;(
j'ai bien fais ce que tu m'as dit et LA c'est le drame! lol vala un petit copier coller d'un immonde message incompréhensible :

C:\demo\eclipse\workspace\test>java rmidemo.HelloImpl
HelloImpl err: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,r
esolve)
java.security.AccessControlException: access denied (java.net.SocketPermission 1
27.0.0.1:1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown S
ource)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown S
ource)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Unknown Source)
at rmidemo.HelloImpl.main(HelloImpl.java:24)



alors heu, bin je comprend rien en fait....tu pourrais pas me filer un coup de main steuplé :)))))))))))))))))

A bientot

Gaëlle
0
silfaxu Messages postés 102 Date d'inscription jeudi 18 décembre 2003 Statut Contributeur Dernière intervention 6 février 2008 11
24 déc. 2003 à 11:40
Salut,

Le programme a l'air de fonctionner ... :-))
Le problème vient de la politique de sécurité mis en place dans Java ...
Du côté serveur, tu dois avoir un fichier texte qui s'appelle java.policy ou quelque chose comme ça (se terminant par policy en tout cas)
Dans ce fichier, tu dois indiquer que ton serveur accepte les connections sur le port 1099 en rajoutant une ligne du type :
permission java.net.SocketPermission "machine:1099", "connect" ;

En creusant un peu par là, ça résoudra ton problème

sfx

----------------------------------------
Bonnes Fêtes de Fin D'Année
0
1er prog : Aïe!!
24 déc. 2003 à 12:01
Merci encore, et bien après l'ajout de la ligne

permission java.net.SocketPermission "localhost:1099-", "connect"; (reprise de la synthaxe du java) dans le fichier java.policy qui est dans "C:\j2sdk1.4.2_03\jre\lib\security"

j'ai toujours le même message... je sais vraiment pas quoi faire...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'ai le méme probléme que toi moi aussi je dois faire un rapport dans une semaine
donc si quelqu'un peut nous aider ça sera deux cadeaux de noel pour le prix d'un :p
0
slt
pour moi ça a marcher je te dis comment j'ai fais
j'ai utilisée ton document j'ai
edité le fichier avec la commande c:\>policytool
j'ai modifier l'url du codebase dans le fichier security.policy ou tu as ton interface Hello

par exemple "file:/c:/rmidemo/ "
et j'ai mis permission java.security.AllPermission ;
mon fichier security.policy devient
grant codeBase "file:/c:/rmidemo/" {
  permission java.security.AllPermission;
};/code>
apres j'execute :
<code>java -Djava.rmi.server.codebase=file:/c:/rmidemo/
     -Djava.rmi.server.hostname=localhost
     -Djava.security.policy=server.policy
    HelloImpl

j'espére t'avoir aidée
0