Exception in thread “main” java.de sécurité.AccessControlException: accès refusé (java.util.PropertyPermission * lire,écrire)
Je suis en train de lancer une application de bureau qui est développé en java rmi. Alors que je suis en train d'exécuter cette application dans eclipse, je suis d'erreur suivant. S'il vous plaît tout on m'aider merci d'avance.
Exception in thread "main" java.security.AccessControlException: access denied (java.util.PropertyPermission * read,write)
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.checkPropertiesAccess(Unknown Source)
at java.lang.System.getProperties(Unknown Source)
at .HeadOfficeManager.Manager.main(Manager.java:103)
Voici le code.
public static void main(String args[])
{
Manager frame = new Manager();
frame.setVisible(true);
//frame.show(); old 1.4
//Create and install a security manager
if (System.getSecurityManager()== null)
{
System.setSecurityManager(new RMISecurityManager());
}
try
{
Properties prop = System.getProperties();
String httpPath = prop.getProperty("HTTPPath");
new ClassFileServer(80, httpPath);
}
catch (IOException e)
{}
try
{
java.rmi.registry.LocateRegistry.createRegistry(1099);
System.out.println("RMI registry ready.");
}
catch (Exception e)
{
System.out.println("Exception starting RMI registry:");
e.printStackTrace();
}
try
{
RMIHandler = new ManagerRMIHandler();
//Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.rebind("HeadOfficeManager", RMIHandler);
System.err.println("Server ready");
}
catch (Exception e)
{
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
Vous devez vous connecter pour publier un commentaire.
-Djava.security.policy =java.policy.applet
.java.policy.applet
.Ajouter ci-dessous les lignes dans ce fichier.
Enregistrer et exécuter l'application.
Cela donnera toutes les autorisations de sécurité de votre application Java.
Vous avez installé un SecurityManager et vous n'avez pas donné suffisamment d'autorisations dans votre .fichier de stratégie pour l'exécution de votre code. L'exception vous dit que l'autorisation est manquant, mais il ya probablement plus de. Exécutez votre application avec -Djava.de sécurité.debug=accès,défaillance de voir ce que d'autres problèmes de sécurité y sont.
Mais la vraie question ici est pourquoi le gestionnaire de sécurité? Vous avez seulement besoin d'elle dans un serveur RMI, à partir du RMI point de vue, si vous utilisez le RMI code de fonction. Sinon, vous devriez envisager de le supprimer.
Aussi, vous devez stocker le résultat de
createRegistry
quelque part où il ne sera pas de garbage collector, par exemple dans une variable statique. Et une fois que vous avez fait cela, legetRegistry()
appel est redondant.