Help, erreur quand je lance un serveur JAVA :
Premier Prog : Aïe!!
-
seif12 -
seif12 -
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
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:
- Help, erreur quand je lance un serveur JAVA :
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Changer serveur dns - Guide
- Qu'est ce qui se lance au démarrage de l'ordinateur - Guide
- Eclipse java - Télécharger - Langages
6 réponses
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
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
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
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
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
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
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
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
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
donc si quelqu'un peut nous aider ça sera deux cadeaux de noel pour le prix d'un :p
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
j'espére t'avoir aidée
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