1

JVM を起動し、JNI 呼び出しを使用してURLClassLoader. 次に、そのクラス ローダーを使用してクラスをロードし、静的メソッドを呼び出します。

Java 7 update 25 以降、(-Djava.security.managerコマンドラインで使用して) セキュリティマネージャーがインストールされている場合、そのクラスローダーは常にClassNotFoundException. -Djava.security.managerコマンド ラインでを省略しても、すべて問題ありません。

すべてのコードに許可するように Java セキュリティ ポリシーを変更しようとしましjava.security.AllPermissionたが、それは役に立ちません。他のアイデアはありますか?

4

1 に答える 1

0

おそらく、この情報は解決策を見つけるのに役立ちます:

7u25 のリリース ノートには、次のように記載されています。

java.security.AccessController.doPrivileged(PrivilegedAction, AccessControlContext) および AccessController.doPrivileged(PrivilegedExceptionAction, AccessControlContext) の実装が変更され、セキュリティが向上しました。

具体的には、セキュリティー・マネージャーがインストールされていて、システム・コードによって AccessControlContext が作成されず、呼び出し元の ProtectionDomain にセキュリティー許可 (java.security.SecurityPermission) createAccessControlContext が付与されていない場合、アクションは許可なしで実行されます。

URLClassLoader のメソッド「findClass」を参照してください。AccessControl.doPrivileged ブロック内のクラスを検索することに注意してください。

これが役に立てば幸いです。私自身も同様の問題に苦しんでいます。

よろしく。

于 2013-08-11T14:15:41.023 に答える