2017-03-26 1 views
0

j'ai essayé d'exécuter le serveur dans mes NetBeans 7.3.1 du projet java, mais je me suis ceci:exception de contrôle d'accès

Sun Mar 26 15:48:04 EEST 2017 : DRDA_SecurityInstalled.I 
Sun Mar 26 15:48:04 EEST 2017 : access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve") 
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 
    at java.security.AccessController.checkPermission(AccessController.java:884) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at java.lang.SecurityManager.checkListen(SecurityManager.java:1131) 
    at java.net.ServerSocket.bind(ServerSocket.java:374) 
    at java.net.ServerSocket.<init>(ServerSocket.java:237) 
    at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocket(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.access$000(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(Unknown Source) 
    at org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(Unknown Source) 
    at org.apache.derby.drda.NetworkServerControl.main(Unknown Source) 

J'ai cherché la solution et j'ai trouvé un - changer les permissons en java.policy fichier. Eh bien, je l'ai fait:

// Standard extensions get all permissions by default 


grant codeBase "file:${{java.home}}/*" { permission java.security.AllPermission; 
}; 

// default permissions granted to all domains 

grant { 
     // Allows any thread to stop itself using the java.lang.Thread.stop() 
     // method that takes no argument. 
     // Note that this permission is granted by default only to remain 
     // backwards compatible. 
     // It is strongly recommended that you either remove this permission 
     // from this policy file or further restrict it to code sources 
     // that you specify, because Thread.stop() is potentially unsafe. 
     // See the API specification of java.lang.Thread.stop() for more 
     // information. 
     permission java.lang.RuntimePermission "stopThread"; 

     // allows anyone to listen on dynamic ports 
     permission java.net.SocketPermission "localhost:0", "listen"; 

     // "standard" properies that can be read by anyone 

     permission java.util.PropertyPermission "java.version", "read"; 
     permission java.util.PropertyPermission "java.vendor", "read"; 
     permission java.util.PropertyPermission "java.vendor.url", "read"; 
     permission java.util.PropertyPermission "java.class.version", "read"; 
     permission java.util.PropertyPermission "os.name", "read"; 
     permission java.util.PropertyPermission "os.version", "read"; 
     permission java.util.PropertyPermission "os.arch", "read"; 
     permission java.util.PropertyPermission "file.separator", "read"; 
     permission java.util.PropertyPermission "path.separator", "read"; 
     permission java.util.PropertyPermission "line.separator", "read"; 

     permission java.util.PropertyPermission "java.specification.version", "read"; 
     permission java.util.PropertyPermission "java.specification.vendor", "read"; 
     permission java.util.PropertyPermission "java.specification.name", "read"; 

     permission java.util.PropertyPermission "java.vm.specification.version", "read"; 
     permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; 
     permission java.util.PropertyPermission "java.vm.specification.name", "read"; 
     permission java.util.PropertyPermission "java.vm.version", "read"; 
     permission java.util.PropertyPermission "java.vm.vendor", "read"; 
     permission java.util.PropertyPermission "java.vm.name", "read"; 
permission java.net.SocketPermission "localhost:1527", "listen";// here I added this string that should resolve this problem 
}; 

Après ces étapes que j'ai essayé de pousser le serveur, mais toujours Thame exception est THROWED. Peut-être que je fais quelque chose de mal?

+0

des idées que je serais heureux de le résoudre ... –

+0

https://db.apache.org/derby/docs/10.13/security /csecjavasecurity.html –

Répondre

2

J'ai trouvé quelques petites choses qui pourraient aider.

  1. Utilisation:
    permission java.net.SocketPermission "localhost:1527", "listen";
    au lieu de:
    permission java.net.SocketPermission "localhost:0", "listen";
  2. Assurez-vous que vous modifiez les fichiers de stratégie correcte en cas de plusieurs JREs présents sur votre system.To vérifier cette utilisation :

    System.out.println(System.getProperty(“java.home”));

    ensuite apporter des modifications à:

    {Above path}\lib\security\java.policy