0

RMIを使用してファイルを送信する方法に関するチュートリアルに従っています。

チュートリアル:リンク

サーバーを実行しようとするとエラーが発生します。チュートリアルとは異なる唯一の変更は、ポートをデフォルトの 1099 ではなく 1097 に変更したことです。

このエラーを解決するにはどうすればよいですか?

これは私が受け取るエラーです:

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() です。

ここ:

FileInterface fi = new FileImpl("FileServer");
     Naming.rebind("//127.0.0.1:1097/FileServer", fi);

アドレスを localhost に変更してみましたが、同じエラーが発生します。

解決

JRE フォルダーまたは特定のポリシー ファイル内の特定の Java ポリシー ファイルを指定します。

java -Djava.security.policy="C:\\FT_RMI\\java.policy" FileServer
4

2 に答える 2

3

JREのセキュリティプロパティでソケット接続を許可する必要があります。これは、jre / lib / security/java.policyで確認できます。

于 2012-12-19T19:01:12.787 に答える
0

SecurityManager.RMI コードベース機能を使用していない場合、またはサーバーでの使用を指示する別の特定のセキュリティ要件がある場合を除き、単に削除してください。

于 2012-12-20T10:23:36.563 に答える