1

jarファイルからリソースを読み取り、それをローカルディスクに書き込むという特定の要件があります。しかし、そのリソースをローカルディスクに書き込もうとすると、例外が発生します。

java.io.FilePermission (write) is raised.

私は私の瓶に署名してもらいます。私も次の解決策を試しましたが、どちらも機能しません。

AccessController.doPrivileged(new PrivilegedAction() 

何も機能していないようです。

これはどこでも利用できる最も一般的なソリューションであるため、jarに署名した後の手順がありませんか?

ポリシーファイルを使用せずにローカルファイルに書き込むにはどうすればよいですか(各クライアントマシンで書き込むことができないため)?

4

2 に答える 2

4

を使用して、署名されていないWebStartアプリケーションからユーザーの操作でファイルを保存できますjavax.jnlp.FileSaveService

おそらく、欠落している部分が、JNLPファイルでアプリケーションを安全であるとマークしています。ただし、安全なアプリケーションを作成するのは少し難しいので、お勧めしません。

于 2012-06-13T20:52:29.650 に答える
3

JNLPは、以下も指定する必要があります。

<security>
    <all-permissions/>
</security>

詳細については、JNLPファイルの構文を参照してください。


私は通常FileSaveService、トムの回答で詳しく説明されているようにを使用しますが、これは、「ファイル」がアプリを構成するためのデフォルトのプロパティファイルである可能性がある状況のように聞こえます。アプリなので、保存サービスはそれに適していません。ファイルが保存されている場所や、後でファイルにアクセスする方法を知る方法はありません。セキュリティ上の理由から、のFileContents代わりに提供されるオブジェクトにはFile、パスを返すメソッドがありません。

その場合は、設定の詳細を抽出してください。PersistenceServiceJNLPAPIのを使用してファイルおよび保存します。これがデモです。のPersistenceService。このサービスは、サンドボックス化されたアプリでも利用できます。(ブードゥーに署名するコードはありません)。

于 2012-06-13T20:51:52.597 に答える