Java 7 Update 51でJavaDBが起動しなくなった場合の対応
Java SEをアップデートすると以下の例外が出てJavaDBが起動しなくなる。
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")
これを何とかするためには、java.policyを修正をする必要がある。
Macの場合、以下の場所にある。
編集前に必ずバックアップしておく。
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/java.policy
Windowsの場合はC:¥Program Files¥Javaにインストールされてるはず。
java.policyに対して、以下の定義を追加します。
grant codeBase "file:/Applications/NetBeans/glassfish-4.0/javadb/lib/*" {
permission java.net.SocketPermission "localhost:1527", "listen,resolve";
};
自分の場合はNetBeansからGlassFishを起動する場合でしか使用しないため、NetBeansの下にあるlibを指定しています。
Java SE付属のJavaDBを使用する場合は、file://の後を変更すること。
元ネタはstackoverflow先生です。
http://stackoverflow.com/questions/21154400/unable-to-start-derby-database-from-netbeans-7-4