4

アプレットから環境変数を読み取ろうとしています。これが私のコードです

    String env = System.getenv("TWS");
    System.out.println(env);
    Runtime rt = Runtime.getRuntime();
    String s = env + "\\WebStart.bat " ;
    System.out.println(s);
    try {
        Process p = rt.exec(s);
    } catch (Exception e) {
    }

右クリックして実行して netbeans からコードを実行すると、問題なく実行されます。

しかし、それをjarファイルに入れると、それを私のWebアプリケーションに追加し、次のコードを使用してhtmlページから実行しようとします

<applet code="draw.class" archive='AppletTest.jar'>
   <param name="shape" value="triangle"/>
</applet>

アクセスが拒否されました、java.lang.RuntimePermissionというエラーが表示されます

Tomcat 6 を使用してこの Web アプリケーションを実行しています。

私はいくつかのガイドを読んで、Tomcat 6 の catalina.policy ファイルに次のエントリを追加し、Tomcat を再起動しました

permission java.lang.RuntimePermission "accessDeclaredMembers";

それでも同じ警告。誰かがこの問題の解決策を提案できますか?

--ランガナ

4

1 に答える 1

3

アプレットを netbeans から実行すると、Java 仮想マシンは、ブラウザから実行する場合とは異なるセキュリティ体制でアプレットを実行します。

セキュリティ証明書を使用して署名されていないブラウザからダウンロードされたアプレットは、信頼されていないと見なされ、署名されていないアプレットと呼ばれます。クライアント上で実行する場合、署名されていないアプレットは、一連の安全な操作のみを許可するセキュリティ サンドボックス内で動作します。SecurityManagerを使用して、特定の権限がアプレットに付与されているかどうかを確認できます。たとえば、あなたの場合:

System.getSecurityManager().checkPermission(new RuntimePermission("accessDeclaredMembers"));

アプレットのセキュリティの詳細については、ここここを参照してください。署名付きアプレットの作成に関する非常に優れたチュートリアルがここにあります。

于 2012-06-12T08:15:01.590 に答える