本文参考的文章:http://blog.coffeebeans.at/?p=770html
今天运行Derby数据库的服务器时,出现如下问题:java
access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")
缘由是:shell
Java 7u51版安全管理器的默认权限有变化,以前容许绑定>1024的端口,如今下限更高。因此derby使用的1527端口被拒绝绑定。数据库
相关变化的官方说明: http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.htmlapache
解决办法:api
须要在$JAVA_HOME/jre/lib/security文件夹下的java.policy文件中相应位置添加一行(可能须要管理员权限才能修改该文件),以容许绑定相应端口:安全
grant { ... permission java.net.SocketPermission "localhost:1527", "listen,resolve"; }
附:报错的具体内容,和个人java版本服务器
C:\Users\**>java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) C:\Users\**>java -jar %DERBY_HOME%\lib\derbyrun.jar server start Fri Feb 14 21:01:07 CST 2014 : 已使用基本服务器安全策略安装了 Security Manager。 Fri Feb 14 21:01:12 CST 2014 : access denied ("java.net.SocketPermission" "local host:1527" "listen,resolve") java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:1527" "listen,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.checkListen(Unknown Source) at java.net.ServerSocket.bind(Unknown Source) at java.net.ServerSocket.<init>(Unknown Source) at javax.net.DefaultServerSocketFactory.createServerSocket(Unknown Sourc e) at org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocke t(Unknown Source) at org.apache.derby.impl.drda.NetworkServerControlImpl.access$000(Unknow n Source) at org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(Unknown Sou rce) at org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(Unknown Sou rce) at java.security.AccessController.doPrivileged(Native Method) at org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(Unk nown Source) at org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(Unkno wn Source) at org.apache.derby.drda.NetworkServerControl.main(Unknown Source) at org.apache.derby.iapi.tools.run.main(Unknown Source)