Since: Apr./22nd/2004
Java?dlx?ZLeBf??A???O??Kw?l?F
J????S?ANX[h??`FbN???B
NX[_[?NX???W?Kv??[h??A?O????BNX[_???eq?WAftHg??eq????T?i?fjB
rt.jar
[hjre/lib/ext
?gpbP[WNX[hVXeNX[_[ (java.lang.ClassLoader
) ??X?FX?g?A??AXbh?ReLXgNX[_[AANZXRg[?g java.security.SecureClassLoader
A?TuNX java.net.URLClassLoader
??AAvbgT[ubg?NX[_[?Aei??????B
?NX[_[??A?NX ClassLoader
p?A\bh findClass()
loadClassData()
I[o[Ch?BINX[hAe?NX[_?????JX^ENX[_[邱?l?B
ftHg??AAvP[V?NX[h?A
loadClass()
??AfindClass()
? "*.class
" [hAdefineClass()
"*.class
" ?oCgzioCgR[hjNX\z?B??R[hVXe?????AJVMR[h?s??????Th{bNXij??сEBJavavO\[X??????????B??Albg[Nz?[h?NX?Th{bNX?d???B
JavaTh{bNX?????C???ZLeB}l[W (java.lang.SecurityManager
) ?BftHg??A[J?AvP[V??ZLeB}l[WCXg[?A????\?BAAvbg??Ai?ZLeB}l[WCXg[A[J?t@CVXe?ANZXAjAAvbg?[h?O?zXg??邱?h~??B
T[ubg???AK??|VZLeB}l[W邱??A\~X∫??R[hAT[o??邱??\?B
ZLeB}l[WCXg[??AR[h??s?????F
System.setSecurityManager(new SecurityManager());
javas?VXevpeB"java.security.manager
"w?邱??l???F
>java -Djava.security.manager MyAppl
SDK 1.2?~Java2?AZLeB}l[W??o??ANZXRg[[(java.security.AccessController
)?B{I????AZLANX[_[`p[^[ZLeB}l[W??AZLeB}l[W?ZLeB[|V????ANZX`FbN鏁ENZXRg[[???B
?ANZXRg[???邱???B??A"/tmp"????t@C????`FbN???Xg1?R[hg?B
Xg1. ANZX`FbNR[h
try { // ??ANZX?IuWFNg?? FilePermission perm = new FilePermission("/tmp/*", "read, write"); // ANZXRg[??`FbN AccessController.checkPermission(perm); ... // ? ... } catch (AccessControlException ex) { // ANZX`FbNs?O ex.printStackTrace(); }
AvP[V?Ajava.io.FilePermission
???ANZX?A|Vt@C???eLXgt@C???邱???B?A|V[t@C?ANZX??????B