2017-03-26 3 views
0

私は私のNetBeans 7.3.1 Javaプロジェクトでサーバーを実行しようとしましたが、私はこれだ:アクセス制御例外

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) 

私は解決策を探してきたし、私は1つを見つけたが - でpermissonsを変更しますjava.policyファイル。まあ、私はそれをしなかった:

// 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 
}; 

私は、サーバーをプッシュしようとしたが、それでもテーム例外がthrowedされるこれらの工程の後。多分私は何か間違っているのですか?

+0

任意のアイデアは、私はそれを解決して喜んでいると思います... –

+0

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

答えて

2

役立つ情報がいくつか見つかりました。

  1. 用途:
    permission java.net.SocketPermission "localhost:1527", "listen";
    の代わり:
    permission java.net.SocketPermission "localhost:0", "listen";
  2. 必ずこの使用を確認し、あなたのsystem.To上で、ケースに存在する複数のJREの正しいポリシーファイルを変更されていることを確認:

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

    ?はその後に変更を加える:

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