在花了几个小时浏览谷歌和StackOverflow之后,我在这里问你一个关于这个错误的问题:
Fri Jan 17 10:54:17 IST 2014 : Security manager installed using the Basic server security policy.
Fri Jan 17 10:54:17 IST 2014 : 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:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkListen(SecurityManager.java:1134)
at java.net.ServerSocket.bind(ServerSocket.java:375)
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)当我尝试启动我的JavaDB时,我得到了这个。它根本不起作用,我在互联网上尝试了几乎所有的东西,您的好意将非常感谢,谢谢!
发布于 2014-02-01 12:40:33
通过在http://hanynowsky.wordpress.com/2012/05/03/oracle-sun-jdk-7-derby-server-java-db-does-not-start-using-glassfish-3-1-2-in-netbeans-7-1-2-permission-denied/编辑我的Java.policy文件修复
发布于 2014-12-11 00:06:30
是啊,但仅仅修好监听端口可能不足以施展魅力。
当您查看derby文档时,可以这样说:http://db.apache.org/derby/docs/10.9/adminguide/tadminnetservbasic.html
您可以看到,有一组相当重要的权限。不仅仅是能够打开一个端口。写入文件,读取文件等。
所以,JRE 7比JRE 6有更多的限制。不能保证你的痛苦会以在java策略中像锤子一样简单地允许在侦听端口上打开套接字而结束。
我的建议是:
(a)调整策略文件。使用derby模板策略
(b)调优启动数据库命令以定义所需的策略引用属性
例如,如果您正在使用glassfish: asadmin start-database --jvmoptions="-Dderby.install.url=%DERBY_INSTALL_URL% -Dderby.system.home=%DERBY_SYSTEM_HOME%“
其中,DERBY_INSTALL_URL是rh形式的字符串:file:/c/mypath/to/a/derby/intallFolder/lib/
// ///////////////////////////////////////////
// COPY PASTED PERMISSIONS FROM THE NET - MAKE SURE THE START DERBY COMMAND DEFINEDS THE ${derby.install.url}
///////////////////////////////////////////////
// REFERENCES:
// http://docs.oracle.com/javadb/10.8.3.0/adminguide/tadminnetservbasic.html
// http://db.apache.org/derby/docs/10.11/adminguide/
// This template policy file gives examples of how to configure the
// permissions needed to run a Derby network server with the Java
// Security manager.
//
grant codeBase "${derby.install.url}derby.jar" {
//
// These permissions are needed for everyday, embedded Derby usage.
//
permission java.lang.RuntimePermission "createClassLoader";
permission java.util.PropertyPermission "derby.*", "read";
permission java.util.PropertyPermission "user.dir", "read";
permission java.util.PropertyPermission "derby.storage.jvmInstanceId",
"write";
// The next two properties are used to determine if the VM is 32 or 64
// bit.
permission java.util.PropertyPermission "sun.arch.data.model", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.io.FilePermission "${derby.system.home}","read";
permission java.io.FilePermission "${derby.system.home}${/}-",
"read,write,delete";
//
// This permission lets a DBA reload the policy file while the server
// is still running. The policy file is reloaded by invoking the
// SYSCS_UTIL.SYSCS_RELOAD_SECURITY_POLICY() system procedure.
//
permission java.security.SecurityPermission "getPolicy";
//
// This permission lets you backup and restore databases
// to and from arbitrary locations in your file system.
//
// This permission also lets you import/export data to and from
// arbitrary locations in your file system.
//
// You may want to restrict this access to specific directories.
//
permission java.io.FilePermission "<<ALL FILES>>",
"read,write,delete";
//
// Permissions needed for JMX based management and monitoring, which is
// only available for JVMs supporting "platform management", that is
// Java SE 5.0 or better.
//
// Allows this code to create an MBeanServer:
//
permission javax.management.MBeanServerPermission "createMBeanServer";
//
// Allows access to Derby's built-in MBeans, within the domain
// org.apache.derby.
// Derby must be allowed to register and unregister these MBeans.
// It is possible to allow access only to specific MBeans, attributes or
// operations. To fine tune this permission, see the javadoc of
// javax.management.MBeanPermission or the JMX Instrumentation and Agent
// Specification.
//
permission javax.management.MBeanPermission
"org.apache.derby.*#[org.apache.derby:*]",
"registerMBean,unregisterMBean";
//
// Trusts Derby code to be a source of MBeans and to register these in
// the MBean server.
//
permission javax.management.MBeanTrustPermission "register";
// getProtectionDomain is an optional permission needed for printing
// classpath information to derby.log
permission java.lang.RuntimePermission "getProtectionDomain";
//
// The following permission must be granted for
// Connection.abort(Executor) to work. Note that this permission
// must also be granted to outer (application) code domains.
//
permission java.sql.SQLPermission "callAbort";
};
// grant codeBase "${derby.install.url}derbynet.jar"{
// grant codeBase "file:/D:/cranebox-package/package/cranebox/glassfish-v3/javadb/lib/derbynet.jar" {
grant codeBase "${derby.install.url}derbynet.jar"{
permission java.net.SocketPermission "localhost:1527", "listen";
//
// This permission lets the Network Server manage connections from
// clients.
//
// Accept connections from any host. Derby is listening to the host
// interface specified via the -h option to "NetworkServerControl
// start" on the command line, via the address parameter to the
// org.apache.derby.drda.NetworkServerControl constructor in the API
// or via the property derby.drda.host; the default is localhost.
// You may want to restrict allowed hosts, e.g. to hosts in a specific
// subdomain, e.g. "*.example.com".
permission java.net.SocketPermission "*", "accept";
//
// Needed for server tracing.
//
permission java.io.FilePermission "${derby.drda.traceDirectory}${/}-",
"read,write,delete";
//
// JMX: Uncomment this permission to allow the ping operation of the
// NetworkServerMBean to connect to the Network Server.
//permission java.net.SocketPermission "*", "connect,resolve";
//
// Needed by sysinfo. The file permission is needed to
// check the existence of jars on the classpath. You can
// limit this permission to just the locations which hold
// your jar files.
//
// In this template file, this block of permissions is granted
// to derbynet.jar under the assumption that derbynet.jar is
// the first jar file in your classpath which contains the
// sysinfo classes. If that is not the case, then you will want
// to grant this block of permissions to the first jar file
// in your classpath which contains the sysinfo classes.
// Those classes are bundled into the following Derby
// jar files:
//
// derbynet.jar
// derby.jar
// derbyclient.jar
// derbytools.jar
//
permission java.util.PropertyPermission "user.*", "read";
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "java.class.path", "read";
permission java.util.PropertyPermission "java.runtime.version", "read";
permission java.util.PropertyPermission "java.fullversion", "read";
permission java.lang.RuntimePermission "getProtectionDomain";
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "java.runtime.version", "read";
permission java.io.FilePermission "java.fullversion", "read";
};(c)如果您迫不及待,只想让数据库快速启动和运行,而不关心安全性。只需将此锤子放在JRE的安全策略中:
permission java.security.AllPermission "", "";
https://stackoverflow.com/questions/21178597
复制相似问题