せてぃーずノート

Javaのイベント参加レポートとかを書いたりします。

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