Java セキュリティ マネージャを完全に無効にする方法はありますか?
db4o のソース コードを試しています。リフレクションを使用してオブジェクトを永続化しますが、セキュリティ マネージャーはリフレクションによるプライベート フィールドまたは保護フィールドの読み取りと書き込みを許可していないようです。
私のコード:
public static void main(String[] args) throws IOException {
System.out.println("start");
new File( DB_FILE_NAME ).delete();
ObjectContainer container = Db4o.openFile( DB_FILE_NAME );
String ob = new String( "test" );
container.store( ob );
ObjectSet result = container.queryByExample( String.class );
System.out.println( "retrieved (" + result.size() + "):" );
while( result.hasNext() ) {
System.out.println( result.next() );
}
container.close();
System.out.println("finish");
}
出力:
始める [db4o 7.4.68.12069 2009-04-18 00:21:30] AccessibleObject#setAccessible() は利用できません。プライベート フィールドは保存できません。 取得 (0): 終了
このスレッドは、リフレクションを許可するように java.policy ファイルを変更することを提案していますが、私にはうまくいかないようです。
引数を使用して JVM を開始している
-Djava.security.manager -Djava.security.policy==/home/pablo/.java.policy
ため、指定されたポリシー ファイルが使用される唯一のポリシー ファイルになります。
ファイルは次のようになります。
許す { アクセス権 java.security.AllPermission; 許可 java.lang.reflect.ReflectPermission "suppressAccessChecks"; };
私はこれに最後の 3 時間を費やしましたが、これを機能させる方法についてのアイデアはありません。どんな助けでも感謝します。