0

Java アプレットにテキスト ファイルから読み取らせようとしましたが、ブラウザでアプレットを実行するときにファイルを読み取るための十分な権限がありません。ポリシー ファイルを使用しようとしましたが、機能しないようです。

後で試しました

System.setProperty("java.security.policy", "*filelocation*");

しかし、私はこのエラーが発生しました

java.security.AccessControlException: access denied (java.util.PropertyPermission        java.security.policy write)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.System.setProperty(Unknown Source)
at BIT.init(BIT.java:35)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

アプレットをブラウザで実行するにはどうすればよいですか? Eclipse のアプレット ビューアでは問題なく動作します。

4

2 に答える 2

2

理由はWhat Applets Can and Cannot Doに明記されています。次のことを明確に規定しています。

署名されていないアプレットはセキュリティ サンドボックスに制限され、ユーザーがアプレットを受け入れる場合にのみ実行されます。認定された認証局からの証明書によって署名されたアプレットは、サンドボックス内でのみ実行するか、サンドボックス外で実行する許可を要求できます。いずれの場合も、ユーザーはアプレットのセキュリティ証明書を受け入れる必要があります。受け入れないと、アプレットの実行がブロックされます。

後に次のように述べています。

サンドボックス アプレットは、次の操作を実行できません。

  • ローカル ファイル システム、実行可能ファイル、システム クリップボード、プリンターなどのクライアント リソースにはアクセスできません。
  • サードパーティのサーバー (元のサーバー以外のサーバー) に接続したり、そこからリソースを取得したりすることはできません。
  • ネイティブ ライブラリをロードできません。
  • SecurityManager を変更することはできません。
  • ClassLoader を作成することはできません。
  • 特定のシステム プロパティを読み取ることができません。禁止されているシステム プロパティのリストについては、システム プロパティを参照してください。

アプレットに署名する方法については、こちらを参照してください: RSA 署名付き証明書を使用してアプレットに署名する方法

于 2013-04-27T18:28:55.423 に答える
1

アプレットに署名することを検討する必要があります。

この (短い!) FAQ では、ポリシーと署名の両方について説明しています。

公式ドキュメントは次のとおりです。

そして、ここに良い(古いですが)チュートリアルがあります:

于 2013-04-27T18:29:03.473 に答える