URLClassLoader を介してクラスをロードしようとしています (まあ、通常のクラス ローダーでは動作しません) が、権限を持たないようにしたいと考えています。
したがって、起動時にキーを生成する独自のセキュリティマネージャーを作成しました。これは、(メインスレッドで) 1 回だけ要求できます。セキュリティ マネージャには 2 つのリストがあります。applicationThread にはすべての権利が付与され、temporaryList には 1 つの権利が一度だけ付与されます (これはリフレクションに関するものです)。
説明するのが非常に難しいので、すべてをアップロードすることにしました:以下のリンクを見てください。
わかりました、戻ってきます: スレッドに時間がかかりすぎないかどうかをチェックする WatchDog スレッドを作成しました。
URLClassLoader から 2 つのクラスのインスタンス化を開始すると、エラーが発生することなく正確に 30 個のメソッドを呼び出しますが、31 回目の呼び出しで、次のアクセス許可をチェックしようとしますが、これは 30 回目の呼び出しの後で発生します。
java.lang.RuntimePermission accessClassInPackage.sun.reflect)、
そこで何が起こっているか知っている人はいますか?
編集:例を削除する時間がありました。 http://myxcode.at/securitymanager.zip SecurityManager が同期を要求されていないことがわかりました。この小さなコードを実行して、赤い線を見てください。
赤い線が最初の行にある場合は、プログラムをもう一度実行すると、少し制御されていないように見えることがわかります。
多かれ少なかれ問題は、セキュリティマネージャーを同期する必要があることです。エラー(バグ?)に直面できない人のための私の出力は 次のとおりですhttp://pastebin.com/E9yLRLif
edit2: 多分それはコンソールについてですか? 多分コンソールが遅すぎる?