首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >文件传输RMI

文件传输RMI
EN

Stack Overflow用户
提问于 2012-12-19 16:48:51
回答 2查看 3.6K关注 0票数 0

我只是在学习如何使用RMI发送文件的教程。

教程:链接

当我试图运行服务器时,会遇到一个错误。与教程不同的是,我将端口更改为1097,而不是默认的1099。

如何解决此错误?

这是我收到的错误:

代码语言:javascript
运行
复制
C:\Program Files\Java\jdk1.7.0_09\bin\FT_RMI>java -Djava.security.policy=policy.
txt FileServer
FileServer: access denied ("java.net.SocketPermission" "127.0.0.1:1097" "connect
,resolve")
java.security.AccessControlException: access denied ("java.net.SocketPermission"
 "127.0.0.1:1097" "connect,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.checkConnect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown S
ource)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown S
ource)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
        at sun.rmi.server.UnicastRef.newCall(Unknown Source)
        at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
        at java.rmi.Naming.rebind(Unknown Source)
        at FileServer.main(FileServer.java:11)

第11行是Naming.rebind()。

在此:

代码语言:javascript
运行
复制
FileInterface fi = new FileImpl("FileServer");
     Naming.rebind("//127.0.0.1:1097/FileServer", fi);

我尝试将地址更改为localhost,但也发生了相同的错误。

溶液

指向JRE文件夹或特定策略文件中的特定java策略文件。

代码语言:javascript
运行
复制
java -Djava.security.policy="C:\\FT_RMI\\java.policy" FileServer
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-19 19:01:12

您必须允许在JRE下对您的安全属性进行套接字连接。在jre/lib/security/java.policy中可以看到这一点。

票数 3
EN

Stack Overflow用户

发布于 2012-12-20 10:23:36

除非您使用的是RMI代码库特性,或者您有另一个特定的安全要求要求在服务器中使用它,否则您将在SecurityManager.下运行服务器,只需删除它即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13957140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档