Java RMI:异常:java.security.AccessControlException:访问被拒绝("java.net.SocketPermission"“127.0.0.1:1099”"connect,resolve")
Java RMI: exception: java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
我正在尝试 运行 我的第一个 Java RMI 客户端-服务器应用程序,使用以下命令行输入。
java -cp eclipse-workspace -Djava.rmi.server.codebase=file:/eclipse-workspace -Djava.rmi.server.hostname=localhost -Djava.security.policy=rmidemo.policy -Djava.security.debug=access ct/ExamEngine
rmidemo.policy 文件:
grant codeBase "file:/Users/user/eclipse-workspace/rimdemo/src/ct" {
permission java.security.AllPermission;
};
堆栈跟踪是:
access: access allowed ("java.io.FilePermission"
"/Users/user/eclipse-workspace" "read") access: access allowed
("java.security.SecurityPermission"
"getProperty.networkaddress.cache.ttl") access: access allowed
("java.util.PropertyPermission" "sun.net.inetaddr.ttl" "read") access:
access allowed ("java.security.SecurityPermission"
"getProperty.networkaddress.cache.negative.ttl") access: access
allowed ("java.util.PropertyPermission" "com.sun.sdp.conf" "read")
access: access allowed ("java.lang.RuntimePermission"
"loadLibrary.net") access: access allowed ("java.io.FilePermission"
"/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/libnet.dylib"
"read") access: access allowed ("java.lang.RuntimePermission"
"modifyThreadGroup") access: access allowed
("java.lang.RuntimePermission" "modifyThreadGroup") access: access
allowed ("java.lang.RuntimePermission" "getClassLoader") access:
access allowed ("java.lang.RuntimePermission" "modifyThreadGroup")
access: access allowed ("java.lang.RuntimePermission" "modifyThread")
access: access allowed ("java.lang.RuntimePermission"
"setContextClassLoader") access: access allowed
("java.lang.RuntimePermission" "modifyThread") access: access allowed
("java.util.PropertyPermission" "sun.rmi.dgc.logLevel" "read") access:
access allowed ("java.util.logging.LoggingPermission" "control")
access: access allowed ("java.util.logging.LoggingPermission"
"control") access: access allowed ("java.util.PropertyPermission"
"java.rmi.dgc.leaseValue" "read") access: access allowed
("java.util.PropertyPermission" "sun.rmi.dgc.checkInterval" "read")
access: access allowed ("java.util.logging.LoggingPermission"
"control") access: access allowed
("java.util.logging.LoggingPermission" "control") access: access
allowed ("java.util.PropertyPermission"
"sun.rmi.runtime.schedulerThreads" "read") access: access allowed
("java.lang.RuntimePermission"
"sun.rmi.runtime.RuntimeUtil.getInstance") access: access allowed
("java.lang.RuntimePermission" "getProtectionDomain") access: access
allowed ("java.util.PropertyPermission"
"jdk.internal.lambda.dumpProxyClasses" "read") access: access allowed
("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access:
access allowed ("java.util.PropertyPermission"
"sun.rmi.transport.dgcFilter" "read") access: access allowed
("java.security.SecurityPermission"
"getProperty.sun.rmi.transport.dgcFilter") access: access allowed
("java.lang.RuntimePermission" "setContextClassLoader") access: access
allowed ("java.util.PropertyPermission" "java.rmi.server.hostname"
"read") access: access allowed ("java.lang.reflect.ReflectPermission"
"suppressAccessChecks") access: access allowed
("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access:
access allowed ("java.lang.RuntimePermission" "setContextClassLoader")
access: access allowed ("java.lang.RuntimePermission"
"getClassLoader") access: access allowed
("java.lang.RuntimePermission" "modifyThreadGroup") access: access
allowed ("java.lang.RuntimePermission" "modifyThread") access: access
allowed ("java.lang.RuntimePermission" "setContextClassLoader")
access: access allowed ("java.lang.RuntimePermission" "modifyThread")
access: access allowed ("java.lang.RuntimePermission"
"modifyThreadGroup") access: access allowed
("java.lang.RuntimePermission" "modifyThreadGroup") access: access
allowed ("java.lang.RuntimePermission" "modifyThread") access: access
allowed ("java.lang.RuntimePermission" "modifyThread") access: access
allowed ("java.lang.RuntimePermission" "modifyThread") access: access
allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks")
access: access allowed ("java.lang.reflect.ReflectPermission"
"suppressAccessChecks") access: access allowed
("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access:
access allowed ("java.lang.reflect.ReflectPermission"
"suppressAccessChecks") access: access denied
("java.net.SocketPermission" "MacBook-Pro.local" "resolve")
java.lang.Exception: Stack trace at
java.lang.Thread.dumpStack(Thread.java:1336) at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:462)
at
java.security.AccessController.checkPermission(AccessController.java:884)
at
java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1048)
at java.net.InetAddress.getLocalHost(InetAddress.java:1477) at
java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:158)
at
java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:123)
at
java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:75)
at ct.ExamEngine.main(ExamEngine.java:64) access: access allowed
("java.security.SecurityPermission" "getPolicy") access: access
allowed ("java.io.FilePermission" "/Users/user/eclipse-workspace"
"read") access: domain that failed ProtectionDomain
(file:/Users/user/eclipse-workspace/ )
sun.misc.Launcher$AppClassLoader@2a139a55
java.security.Permissions@27bc2616 ( ("java.net.SocketPermission"
"localhost:0" "listen,resolve") ("java.io.FilePermission"
"/Users/user/eclipse-workspace/-" "read")
("java.lang.RuntimePermission" "exitVM")
("java.lang.RuntimePermission" "stopThread")
("java.util.PropertyPermission" "java.specification.version" "read")
("java.util.PropertyPermission" "java.version" "read")
("java.util.PropertyPermission" "os.arch" "read")
("java.util.PropertyPermission" "java.specification.vendor" "read")
("java.util.PropertyPermission" "java.vm.specification.name" "read")
("java.util.PropertyPermission" "java.vm.vendor" "read")
("java.util.PropertyPermission" "path.separator" "read")
("java.util.PropertyPermission" "os.version" "read")
("java.util.PropertyPermission" "file.separator" "read")
("java.util.PropertyPermission" "line.separator" "read")
("java.util.PropertyPermission" "java.vm.specification.vendor" "read")
("java.util.PropertyPermission" "java.specification.name" "read")
("java.util.PropertyPermission" "java.vendor.url" "read")
("java.util.PropertyPermission" "java.vendor" "read")
("java.util.PropertyPermission" "java.vm.version" "read")
("java.util.PropertyPermission" "java.vm.name" "read")
("java.util.PropertyPermission" "java.vm.specification.version"
"read") ("java.util.PropertyPermission" "os.name" "read")
("java.util.PropertyPermission" "java.class.version" "read") )
access: access allowed ("java.util.PropertyPermission"
"java.rmi.server.hostname" "read") access: access allowed
("java.util.PropertyPermission" "sun.rmi.transport.connectionTimeout"
"read") access: access allowed ("java.util.PropertyPermission"
"sun.rmi.transport.tcp.handshakeTimeout" "read") access: access
allowed ("java.util.PropertyPermission"
"sun.rmi.transport.tcp.responseTimeout" "read") access: access allowed
("java.lang.RuntimePermission"
"sun.rmi.runtime.RuntimeUtil.getInstance") access: access allowed
("java.util.PropertyPermission" "jdk.net.ephemeralPortRange.low"
"read") access: access allowed ("java.lang.RuntimePermission"
"loadLibrary.net") access: access allowed ("java.io.FilePermission"
"/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/libnet.dylib"
"read") access: access allowed ("java.util.PropertyPermission"
"os.name" "read") access: access allowed
("java.util.PropertyPermission" "jdk.net.ephemeralPortRange.high"
"read") access: access denied ("java.net.SocketPermission"
"127.0.0.1:1099" "connect,resolve") java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1336) at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:462)
at
java.security.AccessController.checkPermission(AccessController.java:884)
at
java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
at java.net.Socket.connect(Socket.java:584) at
java.net.Socket.connect(Socket.java:538) at
java.net.Socket.(Socket.java:434) at
java.net.Socket.(Socket.java:211) at
sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at
sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
at
sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at
sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:338) at
sun.rmi.registry.RegistryImpl_Stub.rebind(RegistryImpl_Stub.java:147)
at ct.ExamEngine.main(ExamEngine.java:65) access: access allowed
("java.security.SecurityPermission" "getPolicy") access: access
allowed ("java.io.FilePermission" "/Users/user/eclipse-workspace"
"read") access: domain that failed ProtectionDomain
(file:/Users/user/eclipse-workspace/ )
sun.misc.Launcher$AppClassLoader@2a139a55
java.security.Permissions@4fca772d ( ("java.net.SocketPermission"
"localhost:0" "listen,resolve") ("java.io.FilePermission"
"/Users/user/eclipse-workspace/-" "read")
("java.lang.RuntimePermission" "exitVM")
("java.lang.RuntimePermission" "stopThread")
("java.util.PropertyPermission" "java.specification.version" "read")
("java.util.PropertyPermission" "java.version" "read")
("java.util.PropertyPermission" "os.arch" "read")
("java.util.PropertyPermission" "java.specification.vendor" "read")
("java.util.PropertyPermission" "java.vm.specification.name" "read")
("java.util.PropertyPermission" "java.vm.vendor" "read")
("java.util.PropertyPermission" "path.separator" "read")
("java.util.PropertyPermission" "os.version" "read")
("java.util.PropertyPermission" "file.separator" "read")
("java.util.PropertyPermission" "line.separator" "read")
("java.util.PropertyPermission" "java.vm.specification.vendor" "read")
("java.util.PropertyPermission" "java.specification.name" "read")
("java.util.PropertyPermission" "java.vendor.url" "read")
("java.util.PropertyPermission" "java.vendor" "read")
("java.util.PropertyPermission" "java.vm.version" "read")
("java.util.PropertyPermission" "java.vm.name" "read")
("java.util.PropertyPermission" "java.vm.specification.version"
"read") ("java.util.PropertyPermission" "os.name" "read")
("java.util.PropertyPermission" "java.class.version" "read") )
ExamEngine exception: java.security.AccessControlException: access
denied ("java.net.SocketPermission" "127.0.0.1:1099"
"connect,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.checkConnect(SecurityManager.java:1051)
at java.net.Socket.connect(Socket.java:584) at
java.net.Socket.connect(Socket.java:538) at
java.net.Socket.(Socket.java:434) at
java.net.Socket.(Socket.java:211) at
sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at
sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
at
sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at
sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:338) at
sun.rmi.registry.RegistryImpl_Stub.rebind(RegistryImpl_Stub.java:147)
at ct.ExamEngine.main(ExamEngine.java:65)
[编辑] 如果还不清楚问题出在安全管理器上,当我删除它时,它起作用了,但它是这个应用程序所必需的,所以我需要想办法解决这个问题。
试试这个...
启动 RMI 注册表
rmiregistry &
启动服务器(不要忘记末尾的“&”以便它在后台运行)
注意: 当代码库 属性 值设置为目录的 URL 时,该值必须以“/”结尾。
-Djava.security.policy=/Users/user/eclipse-workspace/rimdemo/src/ct/rmidemo.policy -Djava.rmi.server.codebase=file:/Users/user/eclipse-workspace/rimdemo/src/ct/
启动客户端
-Djava.security.policy=/Users/user/eclipse-workspace/rimdemo/src/ct/rmidemo.policy
您的服务器策略应该是:
grant {
permission java.security.AllPermission;
};
您的客户端策略应该是:
grant {
permission java.security.AllPermission;
};
注意:您可能只对客户端和服务器使用相同的策略文件。另请注意,您的 class 路径必须是 class 文件树
的根目录
我正在尝试 运行 我的第一个 Java RMI 客户端-服务器应用程序,使用以下命令行输入。
java -cp eclipse-workspace -Djava.rmi.server.codebase=file:/eclipse-workspace -Djava.rmi.server.hostname=localhost -Djava.security.policy=rmidemo.policy -Djava.security.debug=access ct/ExamEngine
rmidemo.policy 文件:
grant codeBase "file:/Users/user/eclipse-workspace/rimdemo/src/ct" {
permission java.security.AllPermission;
};
堆栈跟踪是:
access: access allowed ("java.io.FilePermission" "/Users/user/eclipse-workspace" "read") access: access allowed ("java.security.SecurityPermission" "getProperty.networkaddress.cache.ttl") access: access allowed ("java.util.PropertyPermission" "sun.net.inetaddr.ttl" "read") access: access allowed ("java.security.SecurityPermission" "getProperty.networkaddress.cache.negative.ttl") access: access allowed ("java.util.PropertyPermission" "com.sun.sdp.conf" "read") access: access allowed ("java.lang.RuntimePermission" "loadLibrary.net") access: access allowed ("java.io.FilePermission" "/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/libnet.dylib" "read") access: access allowed ("java.lang.RuntimePermission" "modifyThreadGroup") access: access allowed ("java.lang.RuntimePermission" "modifyThreadGroup") access: access allowed ("java.lang.RuntimePermission" "getClassLoader") access: access allowed ("java.lang.RuntimePermission" "modifyThreadGroup") access: access allowed ("java.lang.RuntimePermission" "modifyThread") access: access allowed ("java.lang.RuntimePermission" "setContextClassLoader") access: access allowed ("java.lang.RuntimePermission" "modifyThread") access: access allowed ("java.util.PropertyPermission" "sun.rmi.dgc.logLevel" "read") access: access allowed ("java.util.logging.LoggingPermission" "control") access: access allowed ("java.util.logging.LoggingPermission" "control") access: access allowed ("java.util.PropertyPermission" "java.rmi.dgc.leaseValue" "read") access: access allowed ("java.util.PropertyPermission" "sun.rmi.dgc.checkInterval" "read") access: access allowed ("java.util.logging.LoggingPermission" "control") access: access allowed ("java.util.logging.LoggingPermission" "control") access: access allowed ("java.util.PropertyPermission" "sun.rmi.runtime.schedulerThreads" "read") access: access allowed ("java.lang.RuntimePermission" "sun.rmi.runtime.RuntimeUtil.getInstance") access: access allowed ("java.lang.RuntimePermission" "getProtectionDomain") access: access allowed ("java.util.PropertyPermission" "jdk.internal.lambda.dumpProxyClasses" "read") access: access allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access: access allowed ("java.util.PropertyPermission" "sun.rmi.transport.dgcFilter" "read") access: access allowed ("java.security.SecurityPermission" "getProperty.sun.rmi.transport.dgcFilter") access: access allowed ("java.lang.RuntimePermission" "setContextClassLoader") access: access allowed ("java.util.PropertyPermission" "java.rmi.server.hostname" "read") access: access allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access: access allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access: access allowed ("java.lang.RuntimePermission" "setContextClassLoader") access: access allowed ("java.lang.RuntimePermission" "getClassLoader") access: access allowed ("java.lang.RuntimePermission" "modifyThreadGroup") access: access allowed ("java.lang.RuntimePermission" "modifyThread") access: access allowed ("java.lang.RuntimePermission" "setContextClassLoader") access: access allowed ("java.lang.RuntimePermission" "modifyThread") access: access allowed ("java.lang.RuntimePermission" "modifyThreadGroup") access: access allowed ("java.lang.RuntimePermission" "modifyThreadGroup") access: access allowed ("java.lang.RuntimePermission" "modifyThread") access: access allowed ("java.lang.RuntimePermission" "modifyThread") access: access allowed ("java.lang.RuntimePermission" "modifyThread") access: access allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access: access allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access: access allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access: access allowed ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") access: access denied ("java.net.SocketPermission" "MacBook-Pro.local" "resolve") java.lang.Exception: Stack trace at java.lang.Thread.dumpStack(Thread.java:1336) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:462) at java.security.AccessController.checkPermission(AccessController.java:884) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkConnect(SecurityManager.java:1048) at java.net.InetAddress.getLocalHost(InetAddress.java:1477) at java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:158) at java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:123) at java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:75) at ct.ExamEngine.main(ExamEngine.java:64) access: access allowed ("java.security.SecurityPermission" "getPolicy") access: access allowed ("java.io.FilePermission" "/Users/user/eclipse-workspace" "read") access: domain that failed ProtectionDomain (file:/Users/user/eclipse-workspace/ ) sun.misc.Launcher$AppClassLoader@2a139a55 java.security.Permissions@27bc2616 ( ("java.net.SocketPermission" "localhost:0" "listen,resolve") ("java.io.FilePermission" "/Users/user/eclipse-workspace/-" "read") ("java.lang.RuntimePermission" "exitVM") ("java.lang.RuntimePermission" "stopThread") ("java.util.PropertyPermission" "java.specification.version" "read") ("java.util.PropertyPermission" "java.version" "read") ("java.util.PropertyPermission" "os.arch" "read") ("java.util.PropertyPermission" "java.specification.vendor" "read") ("java.util.PropertyPermission" "java.vm.specification.name" "read") ("java.util.PropertyPermission" "java.vm.vendor" "read") ("java.util.PropertyPermission" "path.separator" "read") ("java.util.PropertyPermission" "os.version" "read") ("java.util.PropertyPermission" "file.separator" "read") ("java.util.PropertyPermission" "line.separator" "read") ("java.util.PropertyPermission" "java.vm.specification.vendor" "read") ("java.util.PropertyPermission" "java.specification.name" "read") ("java.util.PropertyPermission" "java.vendor.url" "read") ("java.util.PropertyPermission" "java.vendor" "read") ("java.util.PropertyPermission" "java.vm.version" "read") ("java.util.PropertyPermission" "java.vm.name" "read") ("java.util.PropertyPermission" "java.vm.specification.version" "read") ("java.util.PropertyPermission" "os.name" "read") ("java.util.PropertyPermission" "java.class.version" "read") )
access: access allowed ("java.util.PropertyPermission" "java.rmi.server.hostname" "read") access: access allowed ("java.util.PropertyPermission" "sun.rmi.transport.connectionTimeout" "read") access: access allowed ("java.util.PropertyPermission" "sun.rmi.transport.tcp.handshakeTimeout" "read") access: access allowed ("java.util.PropertyPermission" "sun.rmi.transport.tcp.responseTimeout" "read") access: access allowed ("java.lang.RuntimePermission" "sun.rmi.runtime.RuntimeUtil.getInstance") access: access allowed ("java.util.PropertyPermission" "jdk.net.ephemeralPortRange.low" "read") access: access allowed ("java.lang.RuntimePermission" "loadLibrary.net") access: access allowed ("java.io.FilePermission" "/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/libnet.dylib" "read") access: access allowed ("java.util.PropertyPermission" "os.name" "read") access: access allowed ("java.util.PropertyPermission" "jdk.net.ephemeralPortRange.high" "read") access: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve") java.lang.Exception: Stack trace at java.lang.Thread.dumpStack(Thread.java:1336) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:462) at java.security.AccessController.checkPermission(AccessController.java:884) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051) at java.net.Socket.connect(Socket.java:584) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.(Socket.java:434) at java.net.Socket.(Socket.java:211) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:338) at sun.rmi.registry.RegistryImpl_Stub.rebind(RegistryImpl_Stub.java:147) at ct.ExamEngine.main(ExamEngine.java:65) access: access allowed ("java.security.SecurityPermission" "getPolicy") access: access allowed ("java.io.FilePermission" "/Users/user/eclipse-workspace" "read") access: domain that failed ProtectionDomain (file:/Users/user/eclipse-workspace/ ) sun.misc.Launcher$AppClassLoader@2a139a55 java.security.Permissions@4fca772d ( ("java.net.SocketPermission" "localhost:0" "listen,resolve") ("java.io.FilePermission" "/Users/user/eclipse-workspace/-" "read") ("java.lang.RuntimePermission" "exitVM") ("java.lang.RuntimePermission" "stopThread") ("java.util.PropertyPermission" "java.specification.version" "read") ("java.util.PropertyPermission" "java.version" "read") ("java.util.PropertyPermission" "os.arch" "read") ("java.util.PropertyPermission" "java.specification.vendor" "read") ("java.util.PropertyPermission" "java.vm.specification.name" "read") ("java.util.PropertyPermission" "java.vm.vendor" "read") ("java.util.PropertyPermission" "path.separator" "read") ("java.util.PropertyPermission" "os.version" "read") ("java.util.PropertyPermission" "file.separator" "read") ("java.util.PropertyPermission" "line.separator" "read") ("java.util.PropertyPermission" "java.vm.specification.vendor" "read") ("java.util.PropertyPermission" "java.specification.name" "read") ("java.util.PropertyPermission" "java.vendor.url" "read") ("java.util.PropertyPermission" "java.vendor" "read") ("java.util.PropertyPermission" "java.vm.version" "read") ("java.util.PropertyPermission" "java.vm.name" "read") ("java.util.PropertyPermission" "java.vm.specification.version" "read") ("java.util.PropertyPermission" "os.name" "read") ("java.util.PropertyPermission" "java.class.version" "read") )
ExamEngine exception: java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,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.checkConnect(SecurityManager.java:1051) at java.net.Socket.connect(Socket.java:584) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.(Socket.java:434) at java.net.Socket.(Socket.java:211) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:338) at sun.rmi.registry.RegistryImpl_Stub.rebind(RegistryImpl_Stub.java:147) at ct.ExamEngine.main(ExamEngine.java:65)
[编辑] 如果还不清楚问题出在安全管理器上,当我删除它时,它起作用了,但它是这个应用程序所必需的,所以我需要想办法解决这个问题。
试试这个...
启动 RMI 注册表
rmiregistry &
启动服务器(不要忘记末尾的“&”以便它在后台运行)
注意: 当代码库 属性 值设置为目录的 URL 时,该值必须以“/”结尾。
-Djava.security.policy=/Users/user/eclipse-workspace/rimdemo/src/ct/rmidemo.policy -Djava.rmi.server.codebase=file:/Users/user/eclipse-workspace/rimdemo/src/ct/
启动客户端
-Djava.security.policy=/Users/user/eclipse-workspace/rimdemo/src/ct/rmidemo.policy
您的服务器策略应该是:
grant {
permission java.security.AllPermission;
};
您的客户端策略应该是:
grant {
permission java.security.AllPermission;
};
注意:您可能只对客户端和服务器使用相同的策略文件。另请注意,您的 class 路径必须是 class 文件树
的根目录