Java.security.accessControlException

masternelson - Modifié par masternelson le 6/08/2013 à 12:17
 masternelson - 6 août 2013 à 12:36
Bonjour,
les gars, j ai un probleme avec mon projet de damier en reseau, en faite le probleme concerne deux classes, serveur.java et client.java , la classe Client est la classe principale de mon projet. la classe serveur sert a creer le serveur de ce reseau.le code source de la classe serveur est le suivant:



import java.net.InetAddress;
import java.rmi.*;
import java.rmi.server.*;

/** 
*
* Classe de définition du serveur.
*
* 
*/

//****************************Classe Serveur********************************************************
public class Serveur{

  //****************************Méthode main*********************************************************
  /** Méthode de création d'une instance de serveur dont
   * les actions se limitent aux méthodes de la classe Damier.
   */

  public static void main(String arg[]){
    try{
      Damier damier = new Damier();
      //java.rmi.registry.LocateRegistry.createRegistry(80);
      System.setSecurityManager(new RMISecurityManager());
      Serveur locale= new Serveur();


      //InetAddress adrLocale = InetAddress.getLocalHost();
      InetAddress adrLocale = InetAddress.getByName("localhost");
      String address = adrLocale.getHostAddress();
      Naming.rebind("damier", damier);
      //Naming.rebind("//localhost:80/C:/wamp/www/DamierReseau", damier);

    }//Fin du tr
    catch (Exception e){
      System.out.println("Probleme dans classe Serveur");
      e.printStackTrace();
    }//Fin du catch (Exception e)
  }//Fin du main
}//Fin de la classe Serveur





et celui de la classe client est le suivant:



import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
import java.util.*;
import java.security.AccessControlException;
import java.net.SocketPermission;

/** 
*
* Classe principale définissant la fenêtre et la connexion des clients, implémentant les méthodes définies dans l'interface ClientDistant.
*
* 
*
*
*/

//****************************Classe Client*********************************************************

/*Cette classe est la classe principale qui définie la fenêtre
contenant le damierServeur, les pions, les joueurs ainsi que les boutons
"Nouvelle Partie" et "Annuler Déplacement"*/

public class Client extends UnicastRemoteObject implements WindowListener, ActionListener, MouseListener, ClientDistant {

  private DamierGraphique damierGraphique;
  private InfosJoueur infosJoueur1, infosJoueur2;
  private static DamierDistant damierDistant;
  private static Client client;
  private static Frame f;
  private static Pion monPion;
  private static int monType;
  protected static Musique musique = new Musique();
  private Images images = new Images();
  private BoiteDialogue boiteDialogue;

  //****************************Constructeur Client*****************************************************
  /** Constructeur de la classe Client construisant la fenêtre incluant
   * un menu déroulant, deux panels d'affichage des scores et un constituant le damier.
   */   
  //Constructeur de la classe Client
  public Client() throws RemoteException,AccessControlException{
    f = new Frame();
    damierGraphique = new DamierGraphique();
    infosJoueur1 = new InfosJoueur(Pion.France, damierGraphique.getAQui(), "France", damierGraphique.compterPions(Pion.France));
    infosJoueur2 = new InfosJoueur(Pion.Bresil, damierGraphique.getAQui(), "Bresil", damierGraphique.compterPions(Pion.Bresil));

    MenuBar menuJeu = new MenuBar();

    Menu outils = new Menu("Outils");
    menuJeu.add(outils);
    MenuItem newPartie = new MenuItem("Nouvelle Partie");
    outils.add(newPartie);
    newPartie.addActionListener(this);
    MenuItem annuler = new MenuItem("Annuler Action");
    outils.add(annuler);
    annuler.addActionListener(this);
    MenuItem quitter = new MenuItem("Quitter");
    outils.add(quitter);
    quitter.addActionListener(this);

    f.setMenuBar(menuJeu);

    f.removeAll();


    f.setTitle("Le jeu de dames des Champions du Monde");
    f.setSize(800, 600);          
    //f.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
    damierGraphique.setLocation(20, 20);
    infosJoueur1.setLocation(615, 20);
    infosJoueur2.setLocation(615, 391);
    f.add(infosJoueur1);
    f.add(damierGraphique);
    f.add(infosJoueur2);
    f.validate();
    Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
        f.setLocation( (screensize.width - f.getWidth())/2,
            (screensize.height - f.getHeight())/2 );

    f.setBackground(new Color(0,150,0));
    f.setResizable(false);
    f.addWindowListener(this);
    f.addMouseListener(this);
    lanDialog dialog = new lanDialog(f,true);
  }//Fin du constructeur Client()


  //****************************Méthode main*********************************************************
  /** Méthode de création d'une instance de client connecté au serveur
   * pouvant communiquer avec ce dernier grâce à l'interface DamierDistant.
   *
   * @param arg[] Tableau d'arguments.
   */

  public static void main(String arg[]) throws RemoteException,AccessControlException{
    client = new Client();
    try{
      System.setSecurityManager(new RMISecurityManager());
      InetAddress adrLocale = InetAddress.getLocalHost();
      String address = adrLocale.getHostAddress();

      //damierDistant = (DamierDistant) Naming.lookup("//localhost:80/C:/wamp/www/DamierReseau");
      damierDistant = (DamierDistant) Naming.lookup("damier");


      int reponseServeur = damierDistant.ajouterClient(client);

      if (reponseServeur == 0)
        System.out.println("Il ya déjà suffisamment de joueurs, désolé");
      else{
        if (reponseServeur == 1){
          monType = Pion.Bresil;
          System.out.println("On attend un nouveau client...");
        }//Fin du if (rep == 1)

        if (reponseServeur == 2){
          monType = Pion.France;
          debuterJeu();
        }//Fin du if (rep == 2)
   
        monPion = new Pion(monType, 0, 0);
      }//Fin du else du if (rep == 0)
    }//Fin du try
    catch (Exception e){
      System.out.println("Probleme dans le MAIN du Client : " + e);
    }//Fin du catch (Exception e)
  }//Fin du main


  //*******************GESTION DES ACTIONS SOURIS, FENETRE, MENU DEROULANT*******************

  //****************************Méthode actionPerformed**************************************
  /** Méthode définissant les actions sur le menu déroulant.
   *
   * @param evt Evénement relevé.
   */

  //Gestion des évènements des contrôles de la fenêtre
  public void actionPerformed(ActionEvent evt)
  {
    //Si le joueur clique sur le menu "Nouvelle Partie", on relance le jeu
    if(evt.getActionCommand().equals("Nouvelle Partie")){
      try{
        damierDistant.nouvellePartie();
      }
      catch (Exception e){
        System.out.println("Un probleme est survenue lors de l'appel du serveur 1 : " + e);
      }
    }
    //Si le joueur clique sur le menu "Annuler Dernière Action"
    if(evt.getActionCommand().equals("Annuler Action"))
    {
      if (monType != damierGraphique.getAQui())
      {
        try{
          damierDistant.annulerDeplacement();
          musique.Jouer("./son/Halliday.au");
        }
        catch (Exception e){
          System.out.println("Un probleme est survenue lors de l'appel du serveur 2 : " + e);
        }
      }
    }
    //Si le joueur clique sur le menu "Quitter", on quitte le jeu
    if(evt.getActionCommand().equals("Quitter")){
      try{   
        damierDistant.deconnecterClients(this);
      }
      catch (Exception e){
        System.out.println("Un probleme est survenue lors de l'appel du serveur 3 : " + e);
      }
      System.exit(0);
    }
  }//Fin de la méthode actionPerformed



  //****************************Méthode windowClosing****************************************
  /** Méthode définissant les actions sur la fenêtre.
   *
   * @param evt Evénement relevé.
   */
  public void windowClosing(WindowEvent evt){
    try{
      damierDistant.deconnecterClients(this);
    }
    catch (Exception e){
      System.out.println("Un probleme est survenue lors de l'appel du serveur 4 : " + e);
    }
    System.exit(0);
  }//Fin de la méthode windowClosing





quand j'execute le projet, le message suivant apparait:



Probleme dans le MAIN du Client : java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")



Pardon, se quelqun peut m'aider a ressourdre ce probleme, serais tres reconnaisant. merce d'avance

2 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 août 2013 à 12:09
Salut,

Je ne vais pas répondre à la question, cependant à fin de m'epargner la remise en page du code et (surtout) de rendre ton poste plus lisible, peux tu stp utiliser les balises "code" (le bouton qui représente un feuille avec des <>).

D'avance merci.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 août 2013 à 12:23
Re,

Sinon pour ce qui est de la réponse le problème semble résolu, ici: https://forums.oracle.com/thread/2245165
Recherche: https://www.google.com/search?q=java.net.SocketPermission+127.0.0.1:1099+connect%2Cresolve
0
merci beaucoup pour ton aide
0
Rejoignez-nous