|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
java.lang.Objectjava.lang.ClassLoader
public abstract class ClassLoader
Ŭ·¡½º ·Î´õ´Â Ŭ·¡½ºÀÇ ·Îµå¸¦ ´ã´çÇÏ´Â °´Ã¼ÀÔ´Ï´Ù. ClassLoader Ŭ·¡½º´Â Ãß»ó Ŭ·¡½ºÀÔ´Ï´Ù. Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸íÀ» ÁöÁ¤Çϸé, Ŭ·¡½º ·Î´õ´Â Ŭ·¡½ºÀÇ Á¤ÀǸ¦ ±¸¼ºÇÏ´Â µ¥ÀÌÅ͸¦ ã¾Æ³»´ÂÁö »ý¼ºÇÕ´Ï´Ù. ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î¼´Â À̸§À» ÆÄÀϸíÀ¸·Î º¯È¯ÇØ, ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ±× À̸§ÀÇ ¡¸Å¬·¡½º ÆÄÀÏ¡¹À» ÀоîµéÀÔ´Ï´Ù.
°¢ Class
°´Ã¼´Â ±× °´Ã¼¸¦ Á¤ÀÇÇÑ ClassLoader¿¡
ÀÇ reference
¸¦
Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.
¹è¿ Ŭ·¡½ºÀÇ Class °´Ã¼´Â Ŭ·¡½º ·Î´õ¿¡ µû¶ó¼´Â ÀÛ¼ºµÇÁö ¾Ê°í, Java Runtime
¿ä±¸¿¡ ÀÀÇØ ÀÚµ¿ÀûÀ¸·Î ÀÛ¼ºµË´Ï´Ù. ¹è¿ Ŭ·¡½ºÀÇ Å¬·¡½º ·Î´õ´Â Class.getClassLoader()
¿¡ ÀÇÇØ µ¹·ÁÁÖ°íÁ® ±× ¿ä¼ÒÀÇ ÇüÅÂÀÇ Å¬·¡½º ·Î´õ¿Í °°°Ô µË´Ï´Ù. ¿ä¼ÒÀÇ ÇüŰ¡ ¿ø½ÃÇüÀÇ °æ¿ì¿¡´Â ¹è¿ Ŭ·¡½º¿¡ Ŭ·¡½º ·Î´õ´Â ¾ø½À´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀº Java °¡»ó ¸Ó½ÅÀÌ µ¿ÀûÀ¸·Î Ŭ·¡½º¸¦ ·ÎµåÇϵµ·Ï È®ÀåÇϱâ À§ÇØ, ClassLoader ¼ºê Ŭ·¡½º¸¦ ±¸ÇöÇÕ´Ï´Ù.
Ŭ·¡½º ·Î´õ´Â ÀϹÝÀûÀ¸·Î ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ ½ÃÅ¥·¯Æ¼ µµ¸ÞÀÎÀ» ³ªÅ¸³»±â À§Çؼ »ç¿ëµË´Ï´Ù.
ClassLoader Ŭ·¡½º´Â À§¾ç ¸ðµ¨À» »ç¿ëÇØ Ŭ·¡½º¿Í ÀÚ¿øÀ» ã½À´Ï´Ù. ClassLoader °¢ ÀνºÅϽº´Â °ü·ÃµÈ ģŬ·¡½º ·Î´õ¸¦ °¡Áý´Ï´Ù. Ŭ·¡½º ¶Ç´Â ÀÚ¿øÀ» ã¾Æ³»±â À§Çؼ ºÒ·Á°¡ ¸é, ClassLoader ÀνºÅϽº´Â ±× ÀÚü·Î Ŭ·¡½º ¶Ç´Â ÀÚ¿øÀÇ °Ë»öÀ» ½ÃµµÇϱâ Àü¿¡ ±× °Ë»öÀ» ģŬ·¡½º¿¡ À§¾ç ÇÕ´Ï´Ù. ¡¸bootstrap Ŭ·¡½º ·Î´õ¡¹¶ó°í ºÒ¸®´Â °¡»ó ¸Ó½ÅÀÇ ºôÆ®ÀΠŬ·¡½º ·Î´õ´Â ±× ÀÚü¿¡¼´Â ºÎ¸ð¸¦ °¡ÁöÁö ¾Ê°í, ClassLoader ÀνºÅϽºÀÇ ºÎ¸ð·Î¼ µ¿ÀÛÇÕ´Ï´Ù.
º¸Åë, Java °¡»ó ¸Ó½ÅÀº Ç÷§Æû¿¡ Á¸ÇÏÁö ¾Ê´Â ¹æ¹ýÀ¸·Î ·ÎÄà ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ Å¬·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. ¿¹¸¦ µé¾î UNIX ½Ã½ºÅÛ¿¡¼´Â CLASSPATH ȯ°æ º¯¼ö¿¡ ÀÇÇØ Á¤ÀÇµÈ µð·ºÅ丮¿¡¼ Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù.
´Ù¸¸, ÆÄÀϷκÎÅÍ ÀÛ¼ºÇÒ ¼ö ¾ø´Â Ŭ·¡½ºµµ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Å¬·¡½º´Â ³×Æ®¿öÅ©µîÀÇ ´Ù¸¥ ¼Ò½º·ÎºÎÅÍ ÀÛ¼ºÇϰųª ¾îÇø®ÄÉÀ̼ÇÀÌ ±¸ÃàÇϰųª ÇÕ´Ï´Ù. ¸Þ¼µå defineClass
´Â
¹ÙÀÌÆ®ÀÇ ¹è¿À» Ŭ·¡½º Class
ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. »õ·Ó°Ô Á¤ÀÇÇÑ Å¬·¡½ºÀÇ ÀνºÅϽº´Â Class.newInstance
¸¦
»ç¿ëÇØ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
Ŭ·¡½º ·Î´õ·Î ÀÛ¼ºÇÑ °´Ã¼ÀÇ ¸Þ¼µå¿Í »ý¼ºÀÚ´Â ´Ù¸¥ Ŭ·¡½º¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÂüÁ¶Çϴ Ŭ·¡½º¸¦ ÆÇÁ¤Çϱâ À§Çؼ
Java °¡»ó ¸Ó½ÅÀº Ŭ·¡½º¸¦ ÃÖÃÊ·Î ÀÛ¼ºÇÑ Å¬·¡½º ·Î´õÀÇ loadClass
¸Þ¼µå¸¦ È£ÃâÇÕ´Ï´Ù.
¿¹¸¦ µé¾î ¾îÇø®ÄÉÀ̼ÇÀº ³×Æ®¿öÅ© Ŭ·¡½º ·Î´õ¸¦ ÀÛ¼ºÇØ, ¼¹ö·ÎºÎÅÍ Å¬·¡½º ÆÄÀÏÀ» ´Ù¿î·ÎµåÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
ClassLoader loader = new NetworkClassLoader(host, port); Object main = loader.loadClass("Main", true). newInstance(); . . .
³×Æ®¿öÅ© Ŭ·¡½º ·Î´õÀÇ ¼ºê Ŭ·¡½º´Â ³×Æ®¿öÅ©·ÎºÎÅÍ Å¬·¡½º¸¦ ·ÎµåÇϱâ À§Çؼ findClass
¸Þ¼µå¿Í loadClassData ¸Þ¼µå¸¦ Á¤ÀÇÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ´Â ¹ÙÀÌÆ®¸¦ ÇÑ ¹ø ´Ù¿î·ÎµåÇϸé, ¸Þ¼µå defineClass
¸¦
»ç¿ëÇØ Ŭ·¡½º ÀνºÅϽº¸¦ »ý¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ±¸ÇöÀÇ ¿¹¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.
class NetworkClassLoader extends ClassLoader { String host; int port; public Class findClass(String name) { byte[] b = loadClassData(name); return defineClass(name, b, 0, b.length); } private byte[] loadClassData(String name) { // load the class data from the connection . . . } }
ClassLoader
¸Þ¼µå¿¡ String
ÆÄ¶ó¹ÌÅͷμ Á¦°øµÇ´Â Ŭ·¡½º¸íÀº, ¡¸Java ¾ð¾î »ç¾ç¡¹À¸·Î Á¤ÀÇµÈ ¹ÙÀ̳ʸ®¸íÀÏ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌÇÏ¿¡ À¯È¿ÇÑ Å¬·¡½º¸íÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
"java.lang.String" "javax.swing.JSpinner$DefaultEditor" "java.security.KeyStore$Builder$FileBuilder$1" "java.net.URLClassLoader$3$1"
resolveClass(Class)
»ý¼ºÀÚ °³¿ä | |
---|---|
protected |
ClassLoader ()
getSystemClassLoader() ¸Þ¼µå¿¡ ÀÇÇØ ¸®ÅÏµÈ ClassLoader¸¦ ģŬ·¡½º ·Î´õ·Î¼ »ç¿ëÇØ, »õ·Î¿î Ŭ·¡½º ·Î´õ¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
protected |
ClassLoader (ClassLoader parent)
ÁöÁ¤µÈ ģŬ·¡½º ·Î´õ¸¦ »ç¿ëÇØ, À§¾çÀ» À§Çؼ »õ·Î¿î Ŭ·¡½º ·Î´õ¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
¸Þ¼µå °³¿ä | |
---|---|
void |
clearAssertionStatus ()
ÀÌ Å¬·¡½º ·Î´õÀÇ µðÆúÆ® ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ false·Î ¼³Á¤ÇØ, Ŭ·¡½º ·Î´õ°¡ °ü·ÃµÈ µðÆúÆ® ÆÐŰÁö ¹× Ŭ·¡½º ¼±¾ð ½ºÅ×ÀÌÅͽº ¼³Á¤À» ¸ðµÎ ÆÄ±âÇÕ´Ï´Ù. |
protected Class <? > |
defineClass (byte[] b,
int off,
int len)
ÃßõÇÏÁö ¾Ê½À´Ï´Ù. defineClass(String, byte[], int, int) ·Î ¿Å°ÜÁ³½À´Ï´Ù. |
protected Class <? > |
defineClass (String name,
byte[] b,
int off,
int len)
¹ÙÀÌÆ®ÀÇ ¹è¿À» Class Ŭ·¡½ºÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. |
protected Class <? > |
defineClass (String name,
byte[] b,
int off,
int len,
ProtectionDomain protectionDomain)
¿É¼ÇÀÇ ProtectionDomain¸¦ »ç¿ëÇØ, ¹ÙÀÌÆ®ÀÇ ¹è¿À» Class Ŭ·¡½ºÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. |
protected Class <? > |
defineClass (String name,
ByteBuffer b,
ProtectionDomain protectionDomain)
¿É¼ÇÀÇ ProtectionDomain¸¦ »ç¿ëÇØ, ByteBuffer ¸¦
Class Ŭ·¡½ºÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. |
protected Package |
definePackage (String name,
String specTitle,
String specVersion,
String specVendor,
String implTitle,
String implVersion,
String implVendor,
URL sealBase)
ÀÌ ClassLoader·Î À̸§À» »ç¿ëÇØ ÆÐŰÁö¸¦ Á¤ÀÇÇÕ´Ï´Ù. |
protected Class <? > |
findClass (String name)
ÁöÁ¤µÈ¹ÙÀ̳ʸ®¸íÀ» °¡Áö´Â Ŭ·¡½º¸¦ ã½À´Ï´Ù. |
protected String |
findLibrary (String libname)
³×ÀÌÆ¼ºê ¶óÀ̺귯¸®ÀÇ Àý´ë ÆÐ½º¸íÀ» ¸®ÅÏÇÕ´Ï´Ù. |
protected Class <? > |
findLoadedClass (String name)
ÀÌ ·Î´õ°¡ À̹ÙÀ̳ʸ®¸íÀ» °¡Áö´Â Ŭ·¡½ºÀÇ ½ÃÀÛ ·Î´õ·Î¼ Java °¡»ó ¸Ó½Å¿¡ ÀÇÇØ ±â·ÏµÇ°í ÀÖ¾úÀ» °æ¿ì´Â ÁöÁ¤µÈ¹ÙÀ̳ʸ®¸íÀ» °¡Áö´Â Ŭ·¡½º¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
protected URL |
findResource (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ÀÚ¿øÀ» ã½À´Ï´Ù. |
protected Enumeration <URL > |
findResources (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ¸ðµç ÀÚ¿øÀ» ³ªÅ¸³»´Â URL °´Ã¼ÀÇ ¿°Å¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
protected Class <? > |
findSystemClass (String name)
ÁöÁ¤µÈ¹ÙÀ̳ʸ®¸íÀ» °¡Áö´Â Ŭ·¡½º¸¦ ã¾Æ, Çʿ信 µû¶ó¼ ·ÎµåÇÕ´Ï´Ù. |
protected Package |
getPackage (String name)
ÀÌ Å¬·¡½º ·Î´õÀΰ¡ °Ô´Ù°¡ À§°´Ã¼ÀÇ ¾î¶² °Í µî¿¡ ÇØ¼ Á¤ÀÇµÈ Package¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
protected Package [] |
getPackages ()
ÀÌ Å¬·¡½º ·Î´õ¿Í °Ô´Ù°¡ À§°´Ã¼¿¡ ÀÇÇØ Á¤ÀÇµÈ ¸ðµç Packages¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
ClassLoader |
getParent ()
À§¾çÀ» À§ÇÑ Ä£Å¬·¡½º ·Î´õ¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
URL |
getResource (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ÀÚ¿øÀ» ã¾Æ³À´Ï´Ù. |
InputStream |
getResourceAsStream (String name)
ÁöÁ¤µÈ ÀÚ¿øÀ» ÀоîµéÀÌ´Â ÀÔ·Â ½ºÆ®¸²À» ¸®ÅÏÇÕ´Ï´Ù. |
Enumeration <URL > |
getResources (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ¸ðµç ÀÚ¿øÀ» ã½À´Ï´Ù. |
static ClassLoader |
getSystemClassLoader ()
À§¾çÀ» À§ÇÑ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
static URL |
getSystemResource (String name)
Ŭ·¡½º¸¦ ·ÎµåÇϱâ À§Çؼ »ç¿ëµÇ´Â °Ë»ö ÆÐ½º·ÎºÎÅÍ, ÁöÁ¤µÈ À̸§ÀÇ ÀÚ¿øÀ» ã½À´Ï´Ù. |
static InputStream |
getSystemResourceAsStream (String name)
Ŭ·¡½º¸¦ ·ÎµåÇϱâ À§Çؼ »ç¿ëµÇ´Â °Ë»ö ÆÐ½º·ÎºÎÅÍ, ÁöÁ¤µÈ À̸§ÀÇ ÀÚ¿øÀ» Àо±â À§Çؼ ¿±´Ï´Ù. |
static Enumeration <URL > |
getSystemResources (String name)
Ŭ·¡½º¸¦ ·ÎµåÇϱâ À§Çؼ »ç¿ëµÇ´Â °Ë»ö ÆÐ½º·ÎºÎÅÍ, ÁöÁ¤µÈ À̸§ÀÇ ¸ðµç ÀÚ¿øÀ» ã½À´Ï´Ù. |
Class <? > |
loadClass (String name)
ÁöÁ¤µÈ¹ÙÀ̳ʸ®¸íÀ» °¡Áö´Â Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. |
protected Class <? > |
loadClass (String name,
boolean resolve)
ÁöÁ¤µÈ¹ÙÀ̳ʸ®¸íÀ» °¡Áö´Â Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. |
protected void |
resolveClass (Class <? > c)
ÁöÁ¤µÈ Ŭ·¡½º¸¦ ¸µÅ©ÇÕ´Ï´Ù. |
void |
setClassAssertionStatus (String className,
boolean enabled)
ÀÌ Å¬·¡½º ·Î´õ ¹× ³»ºÎÀÇ »óÀÚ ±¸Á¶ Ŭ·¡½º³»ÀÇ À̸§ ÷ºÎÀÇ Åé ·¹º§ Ŭ·¡½º¿¡ ´ëÇØ¼ ¸ñÀûÀÇ ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
void |
setDefaultAssertionStatus (boolean enabled)
ÀÌ Å¬·¡½º ·Î´õÀÇ µðÆúÆ® ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
void |
setPackageAssertionStatus (String packageName,
boolean enabled)
À̸§ ÷ºÎ ÆÐŰÁöÀÇ µðÆúÆ® ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
protected void |
setSigners (Class <? > c,
Object [] signers)
Ŭ·¡½ºÀÇ ¼¸íÀÚ¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼µå |
---|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
»ý¼ºÀÚ »ó¼¼ |
---|
protected ClassLoader(ClassLoader parent)
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÒ °æ¿ì¿¡
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkCreateClassLoader
¸Þ¼µå°¡ È£ÃâµË´Ï´Ù. À̰ÍÀº ½ÃÅ¥·¯Æ¼ ¿¹¿Ü°¡ µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
parent
- ºÎ¸ðÀÇ Å¬·¡½º ·Î´õ
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkCreateClassLoader ¸Þ¼µå°¡ »õ·Î¿î Ŭ·¡½º ·Î´õÀÇ ÀÛ¼ºÀ» Çã°¡ÇÏÁö ¾Ê´Â °æ¿ìprotected ClassLoader()
getSystemClassLoader()
¸Þ¼µå¿¡ ÀÇÇØ ¸®ÅÏµÈ ClassLoader¸¦ ģŬ·¡½º ·Î´õ·Î¼ »ç¿ëÇØ, »õ·Î¿î Ŭ·¡½º ·Î´õ¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÒ °æ¿ì¿¡
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkCreateClassLoader
¸Þ¼µå°¡ È£ÃâµË´Ï´Ù. À̰ÍÀº ½ÃÅ¥·¯Æ¼ ¿¹¿Ü°¡ µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkCreateClassLoader ¸Þ¼µå°¡ »õ·Î¿î Ŭ·¡½º ·Î´õÀÇ ÀÛ¼ºÀ» Çã°¡ÇÏÁö ¾Ê´Â °æ¿ì¸Þ¼µåÀÇ »ó¼¼ |
---|
public Class <? > loadClass(String name) throws ClassNotFoundException
loadClass(String, boolean)
¸Þ¼µå¿Í °°Àº ¹æ¹ýÀ¸·Î Ŭ·¡½º¸¦ °Ë»öÇÕ´Ï´Ù. Java °¡»ó ¸Ó½ÅÀÌ ÀÌ ¸Þ¼µå¸¦ È£ÃâÇØ, Ŭ·¡½º ÂüÁ¶¸¦ ÇØ°áÇÕ´Ï´Ù. ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀº, loadClass(name, false)
¸¦
È£ÃâÇÏ´Â °Í¿¡ »ó´çÇÕ´Ï´Ù.
name
- Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸í
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ìprotected Class <? > loadClass(String name, boolean resolve) throws ClassNotFoundException
findLoadedClass(String)
¸¦
È£ÃâÇØ, Ŭ·¡½º°¡ À̹Ì
·Îµå µÇ¾ú´ÂÁö ¾î¶°Çß´ÂÁö¸¦ È®ÀÎÇÑ´Ù
ģŬ·¡½º ·Î´õ·Î loadClass
¸Þ¼µå¸¦ È£ÃâÇÑ´Ù. ºÎ¸ð°¡ nullÀÎ °æ¿ì, °¡»ó ¸Ó½Å¿¡ »ðÀÔµÈ Å¬·¡½º ·Î´õ°¡ ´ë½Å¿¡ È£ÃâÇÑ´Ù
findClass(String)
¸Þ¼µå¸¦ È£ÃâÇØ, Ŭ·¡½º¸¦ ã´Â´Ù
»ó±âÀÇ ¼ø¼·Î Ŭ·¡½º°¡ ¹ß°ßµÇ¾úÀ» °æ¿ì, resolve Ç÷¡±×°¡ true ¶§¿¡´Â ÀÌ ¸Þ¼µå´Â ¹ß°ßµÈ Class °´Ã¼¿¡ ´ëÇØ¼ resolveClass(Class)
¸Þ¼µå¸¦ È£ÃâÇÕ´Ï´Ù.
ClassLoader
¼ºê Ŭ·¡½º°¡ ÀÌ ¸Þ¼µå°¡ ¾Æ´Ï°í findClass(String)
¸¦
¿À¹ö¶óÀ̵å(override) ÇÏ´Â °ÍÀÌ Ãßõ µÇ°í ÀÖ½À´Ï´Ù.
name
- Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸í resolve
- trueÀÎ °æ¿ì´Â Ŭ·¡½º¸¦ ÇØ¼® ó¸®ÇÑ´Ù
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ìprotected Class <? > findClass(String name) throws ClassNotFoundException
loadClass
¸Þ¼µå¿¡ ÀÇÇØ È£ÃâÇÕ´Ï´Ù. µðÆúÆ®ÀÇ ±¸ÇöÀº ClassNotFoundExceptionÀ» Throw ÇÕ´Ï´Ù.
name
- Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸í
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ì@Deprecated protected final Class <? > defineClass(byte[] b, int off, int len) throws ClassFormatError
defineClass(String, byte[], int, int)
·Î ¿Å°ÜÁ³½À´Ï´Ù.
b
- Ŭ·¡½º µ¥ÀÌÅ͸¦ ±¸¼ºÇÏ´Â ¹ÙÀÌÆ®. off·Î
ºÎÅÍ off+len-1 ±îÁöÀÇ À§Ä¡¿¡ ÀÖ´Â ¹ÙÀÌÆ®´Â ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹À¸·Î Á¤ÀǵǴ À¯È¿ÇÑ Å¬·¡½º ÆÄÀÏÀÇ Çü½ÄÀ» °¡Áö´Âoff
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ b
°³½Ã ¿ÀÇÁ¼Â(offset)len
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ ±æÀÌ
ClassFormatError
- µ¥ÀÌÅͰ¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
IndexOutOfBoundsException
- off ¶Ç´Â len
¾î´À ÂÊÀÎÁö°¡ ºÎÀÇ °æ¿ì, ¶Ç´Â off+len°¡ b.length º¸´Ù Å« °æ¿ìloadClass(String, boolean)
,
resolveClass(Class)
protected final Class <? > defineClass(String name, byte[] b, int off, int len) throws ClassFormatError
ÀÌ ¸Þ¼µå´Â µðÆúÆ® ProtectionDomain
¸¦, »õ·Ó°Ô Á¤ÀÇµÈ Å¬·¡½º¿¡ ÇÒ´çÇÕ´Ï´Ù. ProtectionDomain´Â
Policy.getPolicy(). getPermissions(new CodeSource(null, null))
°¡ ºÒ·Á °¬À» ¶§¿¡ ¸®ÅϵÈ
Á¢±Ù ±ÇÇѰú °°Àº Á¢±Ù ±ÇÇÑÀ» º¸°ü À¯ÁöÇÕ´Ï´Ù. µðÆúÆ®ÀÇ µµ¸ÞÀÎÀº defineClass
ÃÖÃÊÀÇ È£Ãâ·Î ÀÛ¼ºµÇ¾î ±× ÈÄÀÇ È£Ãâ·Î Àç»ç¿ëµË´Ï´Ù.
ƯÁ¤ÀÇ ProtectionDomain¸¦ Ŭ·¡½º¿¡ ÇÒ´çÇÏ·Á¸é,
ProtectionDomain¸¦ ±× ÀμöÀÇ 1°³
·Î¼ ÃëÇÏ´Â defineClass
¸Þ¼µå¸¦ »ç¿ëÇÕ´Ï´Ù.
name
- Ŭ·¡½º°¡ ¿¹»óµÇ´Â¹ÙÀ̳ʸ®¸í . ºÒ¸íÇÑ °æ¿ì´Â nullb
- Ŭ·¡½º µ¥ÀÌÅ͸¦ ±¸¼ºÇÏ´Â ¹ÙÀÌÆ®. off·Î
ºÎÅÍ off+len-1 ±îÁöÀÇ À§Ä¡¿¡ ÀÖ´Â ¹ÙÀÌÆ®´Â ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹À¸·Î Á¤ÀǵǴ À¯È¿ÇÑ Å¬·¡½º ÆÄÀÏÀÇ Çü½ÄÀ» °¡Áö´Âoff
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ b
°³½Ã ¿ÀÇÁ¼Â(offset)len
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ ±æÀÌ
ClassFormatError
- µ¥ÀÌÅͰ¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
IndexOutOfBoundsException
- off ¶Ç´Â len
¾î´À ÂÊÀÎÁö°¡ ºÎÀÇ °æ¿ì, ¶Ç´Â off+len°¡ b.length º¸´Ù Å« °æ¿ì
SecurityException
- ÀÌ Å¬·¡½º¿Í´Â ´Ù¸¥ ÀÎÁõ¼
¼¼Æ® (ºÎÈ£ ¾øÀ½)¸¦ »ç¿ëÇØ ¼¸íµÈ Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ÆÐŰÁö¿¡
ÀÌ Å¬·¡½º¸¦ Ãß°¡ÇÏ·Á°í ÇÏ´Â °æ¿ì, ¶Ç´Â name°¡ ¡¸java. ¡¹(À¸)·Î ½ÃÀ۵Ǵ °æ¿ìloadClass(String, boolean)
,
resolveClass(Class)
,
CodeSource
,
SecureClassLoader
protected final Class <? > defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) throws ClassFormatError
defineClass(String, byte[], int, int)
¹®¼·Î °¡¸®Å°´Â ´ë·Î Ŭ·¡½º¿¡ ÇÒ´çÇÒ ¼ö ÀÖ°í ÀÖ½À´Ï´Ù. ÃÖÃʷΠŬ·¡½º¸¦ ÇØ°áÇÏÁö ¾ÊÀ¸¸é, Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÆÐŰÁö·Î Á¤ÀǵǴ ÃÖÃÊÀÇ Å¬·¡½º´Â ±× ÆÐŰÁö³»¿¡¼ ¿¬¼ÓÇØ Á¤ÀÇµÈ ¸ðµç Ŭ·¡½º¿¡ ÀÖ´Â ÀÎÁõ¼
ÀÇ Á¤È®ÇÑ ¼¼Æ®¸¦ ÆÇÁ¤ÇÕ´Ï´Ù. Ŭ·¡½ºÀÇ ÀÎÁõ¼
¼¼Æ®´Â Ŭ·¡½ºÀÇ ProtectionDomain ³» CodeSource
·ÎºÎÅÍ ÃëµæÇÕ´Ï´Ù. ±× ÆÐŰÁö¿¡ Ãß°¡µÈ Ŭ·¡½º¿¡´Â µ¿ÀÏÇÑ ÀÎÁõ¼
¼¼Æ®°¡ Æ÷ÇԵǾî ÀÖÀ» Çʿ䰡 ÀÖ¾î, Æ÷ÇÔµÇÁö ¾ÊÀº °æ¿ì´Â SecurityExceptionÀÌ
¹ß»ý µË´Ï´Ù. name Àμö°¡ nullÀÎ °æ¿ì, ÀÌ ÆÇº°Àº ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ¹Ýµå½Ã, Á¤ÀÇÇϴ Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸íÀ» ¹ÙÀÌÆ®¿Í ÇÔ²² °Ç³×ÁÙ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌÀÇÇØ °Ç³×ÁÖ¸é, Á¤ÀÇÇϴ Ŭ·¡½º´Â ½ÇÁ¦·Î »ý°¢Çß´ø ´ë·ÎÀÇ Å¬·¡½º°¡ µË´Ï´Ù.
java. * ÆÐŰÁöÀÇ ¸ðµç Ŭ·¡½º´Â bootstrap Ŭ·¡½º ·Î´õ·Î ¹Û¿¡ Á¤ÀÇÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ¡¸java. ¡¹(À¸)·Î ½ÃÀ۵ǴÂname¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù. name°¡ null°¡ ¾Æ´Ñ °æ¿ì¿¡´Â ¹ÙÀÌÆ® ¹è¿ ¡¸b¡¹·Î ÁöÁ¤µÈ Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸í¿¡ µ¿ÀÏÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ì, NoClassDefFoundError°¡ ¹ß»ý µË´Ï´Ù.
name
- Ŭ·¡½º°¡ ¿¹»óµÇ´Â¹ÙÀ̳ʸ®¸í . ºÒ¸íÇÑ °æ¿ì´Â nullb
- Ŭ·¡½º µ¥ÀÌÅ͸¦ ±¸¼ºÇÏ´Â ¹ÙÀÌÆ®. off·Î
ºÎÅÍ off+len-1 ±îÁöÀÇ À§Ä¡¿¡ ÀÖ´Â ¹ÙÀÌÆ®´Â ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹À¸·Î Á¤ÀǵǴ À¯È¿ÇÑ Å¬·¡½º ÆÄÀÏÀÇ Çü½ÄÀ» °¡Áö´Âoff
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ b
°³½Ã ¿ÀÇÁ¼Â(offset)len
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ ±æÀÌprotectionDomain
- ÀÌ Å¬·¡½ºÀÇ ProtectionDomain
ClassFormatError
- µ¥ÀÌÅͰ¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
NoClassDefFoundError
- name°¡ b·Î
ÁöÁ¤µÈ Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸íÀ¸·Î µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ì
IndexOutOfBoundsException
- off ¶Ç´Â len
¾î´À ÂÊÀÎÁö°¡ ºÎÀÇ °æ¿ì, ¶Ç´Â off+len°¡ b.length º¸´Ù Å« °æ¿ì
SecurityException
- ÀÌ Å¬·¡½º¿Í´Â ´Ù¸¥ ÀÎÁõ¼
¼¼Æ®¸¦ »ç¿ëÇØ ¼¸íµÈ Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ÆÐŰÁö¿¡
ÀÌ Å¬·¡½º¸¦ Ãß°¡ÇÏ·Á°í ÇÏ´Â °æ¿ì, ¶Ç´Â name°¡ ¡¸java. ¡¹(À¸)·Î ½ÃÀ۵Ǵ °æ¿ìprotected final Class <? > defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain) throws ClassFormatError
ByteBuffer
¸¦
Class Ŭ·¡½ºÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. µµ¸ÞÀÎÀÌ nullÀÎ °æ¿ì´Â µðÆúÆ®ÀÇ µµ¸ÞÀÎÀÌ, defineClass(String, byte[], int, int)
¹®¼·Î °¡¸®Å°´Â ´ë·Î Ŭ·¡½º¿¡ ÇÒ´çÇÒ ¼ö ÀÖ°í ÀÖ½À´Ï´Ù. ÃÖÃʷΠŬ·¡½º¸¦ ÇØ°áÇÏÁö ¾ÊÀ¸¸é, Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÆÐŰÁöÀÇ ÀÎÁõ¼
¼¼Æ®¸¦ °áÁ¤Çϰí ÀÖ´Â ÆÐŰÁö·Î Á¤ÀÇµÈ ÃÖÃÊÀÇ Å¬·¡½º¿¡ °üÇÑ ±ÔÄ¢°ú Ŭ·¡½º¸í¿¡¼ÀÇ Á¦¾àÀº, defineClass(String, byte[], int, int, ProtectionDomain)
¹®¼·Î °¡¸®Å°´Â °Í°ú µ¿µîÇÕ´Ï´Ù.
ÀÌ ÆûÀÇ ¸Þ¼µå È£Ãâ cl. defineClass(name, bBuffer, pd)¿¡ ¼´Â ´ÙÀ½ÀÇ ¹®Àå°ú Á¤È®ÇÏ°Ô °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
...
byte[] temp = new byte[bBuffer.remaining
()];
bBuffer.get
(temp);
returncl. defineClass (name, temp, 0, temp.length, pd);
name
- ¿¹»óµÇ´Â¹ÙÀ̳ʸ®¸í. ºÒ¸íÇÑ °æ¿ì´Â nullb
- Ŭ·¡½º µ¥ÀÌÅ͸¦ ±¸¼ºÇÏ´Â ¹ÙÀÌÆ®. b.position()·Î
ºÎÅÍ b.position() + b.limit() -1 ±îÁöÀÇ À§Ä¡¿¡ ÀÖ´Â ¹ÙÀÌÆ®´Â ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹À¸·Î Á¤ÀǵǴ À¯È¿ÇÑ Å¬·¡½º ÆÄÀÏÀÇ Çü½ÄÀ» °¡Áö´ÂprotectionDomain
- ÀÌ Å¬·¡½ºÀÇ ProtectionDomain, ¶Ç´Â null
ClassFormatError
- µ¥ÀÌÅͰ¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
NoClassDefFoundError
- name°¡ b·Î
ÁöÁ¤µÈ Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸íÀ¸·Î µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ì
SecurityException
- ÀÌ Å¬·¡½º¿Í´Â ´Ù¸¥ ÀÎÁõ¼
¼¼Æ®¸¦ »ç¿ëÇØ ¼¸íµÈ Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ÆÐŰÁö¿¡
ÀÌ Å¬·¡½º¸¦ Ãß°¡ÇÏ·Á°í ÇÏ´Â °æ¿ì, ¶Ç´Â name°¡ ¡¸java. ¡¹(À¸)·Î ½ÃÀ۵Ǵ °æ¿ìdefineClass(String, byte[], int, int, ProtectionDomain)
protected final void resolveClass(Class <? > c)
c
- ¸µÅ©Çϴ Ŭ·¡½º
NullPointerException
- c°¡ nullÀÎ °æ¿ìdefineClass(String, byte[], int, int)
protected final Class <? > findSystemClass(String name) throws ClassNotFoundException
ÀÌ ¸Þ¼µå´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ (getSystemClassLoader()
¸¦
ÂüÁ¶)¸¦ »ç¿ëÇØ Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. ¸®ÅϵÈ
Class °´Ã¼´Â ±× Ŭ·¡½º °´Ã¼¿¡ °ü·ÃÇÑ ClassLoader¸¦ 1°³
ÀÌ»ó °¡Áö°Ô µË´Ï´Ù. ClassLoader
¼ºê Ŭ·¡½º´Â º¸Åë, ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. À̰ÍÀº ´ëºÎºÐÀÇ Å¬·¡½º ·Î´õ°¡ findClass(String)
¸¸À» ¿À¹ö¶óÀ̵å(override) Çϸé ÁÁ±â ¶§¹®ÀÔ´Ï´Ù.
name
- Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸í
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ìClassLoader(ClassLoader)
,
getParent()
protected final Class <? > findLoadedClass(String name)
name
- Ŭ·¡½ºÀÇ ¹ÙÀ̳ʸ®¸í
protected final void setSigners(Class <? > c, Object [] signers)
c
- Class °´Ã¼signers
- Ŭ·¡½ºÀÇ ¼¸íÀÚpublic URL getResource(String name)
ÀÚ¿øÀÇ À̸§Àº ¡¸/¡¹À¸·Î ´Ü¶ôÁö¾îÁø ÆÐ½º¸íÀ̸ç, À̰Ϳ¡ ÀÇÇØ ÀÚ¿øÀÌ ½Äº°µË´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ¿ì¼± ÀÚ¿øÀÇ Ä£Å¬·¡½º ·Î´õ¸¦ °Ë»öÇÕ´Ï´Ù. ºÎ¸ð°¡ nullÀÎ °æ¿ì, °¡»ó ¸Ó½Å¿¡ »ðÀÔµÈ Å¬·¡½º ·Î´õÀÎ ÆÐ½º°¡ °Ë»öµË´Ï´Ù. °Å±â¿¡ ½ÇÆÐÇϸé, ÀÌ ¸Þ¼µå´Â ÀÚ¿øÀ» ã¾Æ³»±â À§Çؼ findResource(String)
¸¦
È£ÃâÇÕ´Ï´Ù.
name
- ÀÚ¿ø¸í
public Enumeration <URL > getResources(String name) throws IOException
ÀÚ¿øÀÇ À̸§Àº ¡¸/¡¹À¸·Î ´Ü¶ôÁö¾îÁø ÆÐ½º¸íÀ̸ç, À̰Ϳ¡ ÀÇÇØ ÀÚ¿øÀÌ ½Äº°µË´Ï´Ù.
°Ë»ö¼ø¼¿¡ ´ëÇØ¼´Â getResource(String)
¹®¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
name
- ÀÚ¿ø¸í
URL
°´Ã¼ÀÇ ¿°Å. ÀÚ¿øÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì, ¿°Å´Â ºñ¿î´Ù. Ŭ·¡½º ·Î´õ°¡ ¾×¼¼½º¸¦ °¡ÁöÁö ¾Ê´Â ÀÚ¿øÀº ¿°Å¿¡ µé¾î°¡Áö ¾Ê´Â´Ù
IOException
- ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìfindResources(String)
protected URL findResource(String name)
name
- ÀÚ¿ø¸í
protected Enumeration <URL > findResources(String name) throws IOException
URL
°´Ã¼ÀÇ ¿°Å¸¦ ¸®ÅÏÇÕ´Ï´Ù. Ŭ·¡½º ·Î´õÀÇ ±¸ÇöÀº ÀÚ¿øÀÇ ·Îµå¿øÀ» ƯÁ¤Çϱâ À§Çؼ ÀÌ ¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÕ´Ï´Ù.
name
- ÀÚ¿ø¸í
URL
°´Ã¼ÀÇ ¿°Å
IOException
- ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìpublic static URL getSystemResource(String name)
getSystemClassLoader()
¸¦
ÂüÁ¶)¸¦ »ç¿ëÇØ ÀÚ¿øÀ» ã¾Æ³À´Ï´Ù.
name
- ÀÚ¿ø¸í
URL
°´Ã¼. ÀÚ¿øÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â nullpublic static Enumeration <URL > getSystemResources(String name) throws IOException
URL
°´Ã¼ Enumeration
·Î¼ ¸®Åϵ˴ϴÙ
.
°Ë»ö¼ø¼¿¡ ´ëÇØ¼´Â getSystemResource(String)
¹®¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
name
- ÀÚ¿ø¸í
URL
°´Ã¼ÀÇ ¿°Å
IOException
- ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìpublic InputStream getResourceAsStream(String name)
°Ë»ö¼ø¼¿¡ ´ëÇØ¼´Â getResource(String)
¹®¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
name
- ÀÚ¿ø¸í
public static InputStream getSystemResourceAsStream(String name)
getSystemClassLoader()
¸¦
ÂüÁ¶)¸¦ »ç¿ëÇØ ÀÚ¿øÀ» ã¾Æ³À´Ï´Ù.
name
- ÀÚ¿ø¸í
public final ClassLoader getParent()
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì, È£ÃâÃøÀÇ Å¬·¡½º ·Î´õ°¡ null°¡ ¾Æ´Ï°í, ÀÌ Å¬·¡½º ·Î´õÀÇ »óÀ§ °´Ã¼µµ ¾Æ´Ñ °æ¿ì´Â ÀÌ ¸Þ¼µå´Â RuntimePermission("getClassLoader")
Á¢±Ù ±ÇÇÑÀ» »ç¿ëÇØ ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkPermission
¸Þ¼µå¸¦ È£ÃâÇÏ´Â °Í¿¡ÀÇÇØ ģŬ·¡½º ·Î´õ¿¡ ¹®Á¦ ¾ø°Ô ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â °ÍÀ» º¸ÁõÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â SecurityExceptionÀÌ
¹ß»ý µË´Ï´Ù.
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkPermission ¸Þ¼µå°¡ ÀÌ Å¬·¡½º ·Î´õÀÇ Ä£Å¬·¡½º ·Î´õ¿¡°Ô·ÎÀÇ ¾×¼¼½º¸¦ Çã°¡ÇÏÁö ¾Ê´Â °æ¿ìpublic static ClassLoader getSystemClassLoader()
ÀÌ ¸Þ¼µå°¡ ÃÖÃʷΠȣÃâµÇ´Â °ÍÀº ½ÇÇà½ÃÀÇ ½ÃÀÛ ¼ø¼ÀÇ ÃÊÃâ·Â´Ï´Ù. ÀÌ ½ÃÁ¡¿¡¼ ¸Þ¼µå´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ ÀÛ¼ºÇØ, È£ÃâÇÏ´Â Thread ÄÁÅØ½ºÆ® Ŭ·¡½º ·Î´õ¿¡ ±×°ÍÀ» ¼³Á¤ÇÕ´Ï´Ù.
µðÆúÆ®ÀÇ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ´Â ÀÌ Å¬·¡½ºÀÇ ±¸Çö Á¸ ÀνºÅϽºÀÔ´Ï´Ù.
ÀÌ ¸Þ¼µåÀÇ ÃÖÃÊÀÇ È£Ãâ½Ã¿¡ ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ ¡¸java.system.class.loader¡¹°¡ Á¤ÀǵǴ °æ¿ì, ÀÌ ÇÁ·ÎÆÛƼÀÇ °ªÀÌ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ·Î¼ ¸®ÅÏµÈ Å¬·¡½ºÀÇ À̸§ÀÌ µË´Ï´Ù. ÀÌ Å¬·¡½º´Â µðÆúÆ®ÀÇ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ »ç¿ëÇØ ·Îµå µË´Ï´Ù. ¶Ç, ÀÌ Å¬·¡½º´Â À§¾çÀÇ ºÎ¸ð·Î¼ »ç¿ëµÇ´Â ClassLoader ÇüÀÇ ´ÜÀÏÀÇ ÆÄ¶ó¹ÌÅ͸¦ ÃëÇÏ´Â public »ý¼ºÀÚ¸¦ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½¿¡ ÀÌ »ý¼ºÀÚ¸¦ »ç¿ëÇØ, µðÆúÆ®ÀÇ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇØ, ÀνºÅϽº°¡ ÀÛ¼ºµË´Ï´Ù. ÀÛ¼ºµÈ Ŭ·¡½º ·Î´õ´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ·Î¼ Á¤Àǵ˴ϴÙ.
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, È£ÃâÃøÀÇ Å¬·¡½º ·Î´õ°¡ null°¡ ¾Æ´Ï°í, È£ÃâÃøÀÇ Å¬·¡½º ·Î´õ°¡ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¿Í °°Áö ¾Ê´Â°¡ °Ô´Ù°¡ À§°´Ã¼µµ ¾Æ´Ñ °æ¿ì, ÀÌ ¸Þ¼µå´Â RuntimePermission("getClassLoader")
Á¢±Ù ±ÇÇÑÀ» »ç¿ëÇØ ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkPermission
¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖÀ»Áö ¾î¶³Áö¸¦ È®ÀÎÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â SecurityExceptionÀÌ
¹ß»ý µË´Ï´Ù.
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkPermission ¸Þ¼µå°¡ ÀÌ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¿¡°Ô·ÎÀÇ ¾×¼¼½º¸¦ Çã°¡ÇÏÁö ¾Ê´Â °æ¿ì
IllegalStateException
- ¡¸java.system.class.loader¡¹ÇÁ·ÎÆÛƼ¿¡ ÀÇÇØ ÁöÁ¤µÈ Ŭ·¡½º ·Î´õÀÇ ±¸Ãà½Ã¿¡
Àç±ÍÀûÀ¸·Î È£ÃâµÇ´Â °æ¿ì
Error
- ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ ¡¸java.system.class.loader¡¹´Â Á¤ÀǵÇÁö¸¸, À̸§ ÷ºÎ Ŭ·¡½º¸¦ ·ÎµåÇÒ ¼ö ¾ø´Â °æ¿ì, ÇÁ·Î¹ÙÀÌ´õ Ŭ·¡½º´Â Çʼö »ý¼ºÀÚ¸¦ Á¤ÀÇÇÏÁö ¾Ê´ÂÁö, ±× È£Ãâ½Ã¿¡ ¿¹¿Ü°¡ Throw µÈ´Ù. ¿¡·¯ÀÇ ±Ùº» ¿øÀÎÀº, Throwable.getCause()
¸Þ¼µå¸¦ »ç¿ëÇØ ÃëµæÇÒ ¼ö ÀÖ´Ùprotected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) throws IllegalArgumentException
name
- ÆÐŰÁö¸íspecTitle
- »ç¾çÀÇ Å¸ÀÌÆ²specVersion
- »ç¾çÀÇ ¹öÀü
specVendor
- »ç¾çÀÇ º¥´õimplTitle
- ±¸ÇöÀÇ Å¸ÀÌÆ²implVersion
- ±¸ÇöÀÇ ¹öÀü
implVendor
- ±¸ÇöÀÇ º¥´õsealBase
- null°¡ ¾Æ´Ñ °æ¿ì, ÀÌ ÆÐŰÁö´Â ÁöÁ¤µÈ ÄÚµå ¼Ò½º URL
°´Ã¼¸¦ °í·ÁÇØ ¾Á µÈ´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, ÆÐŰÁö´Â ¾Á µÇÁö ¾Ê´Â´Ù
IllegalArgumentException
- ÆÐŰÁö¸íÀÌ, ÀÌ Å¬·¡½º ·Î´õÀΰ¡ ¶Ç´Â °Ô´Ù°¡ À§°´Ã¼ °¡¿îµ¥ 1°³¿¡ Á¸ÀçÇÏ´Â ÆÐŰÁö¿Í Áߺ¹ ÇÏ´Â °æ¿ìprotected Package getPackage(String name)
name
- ÆÐŰÁö¸í
protected Package [] getPackages()
protected String findLibrary(String libname)
libname
- ¶óÀ̺귯¸®¸í
System.loadLibrary(String)
,
System.mapLibraryName(String)
public void setDefaultAssertionStatus(boolean enabled)
setPackageAssertionStatus(String, boolean)
¶Ç´Â setClassAssertionStatus(String, boolean)
¸¦
È£ÃâÇÏ´Â °ÍÀ¸·Î ÀÌ ¼³Á¤À» ÆÐŰÁö ¶Ç´Â Ŭ·¡½º ´ÜÀ§·Î ¿À¹ö¶óÀ̵å(override) ÇÒ ¼ö ÀÖ½À´Ï´Ù.
enabled
- ÀÌ Å¬·¡½º ·Î´õ¿¡ ÀÇÇØ ·Îµå µÇ´Â Ŭ·¡½ºÀÇ ¼±¾ðÀÌ µðÆúÆ®·Î À¯È¿ÇÑ °æ¿ì´Â true, µðÆúÆ®·Î ¹«È¿ÀÎ °æ¿ì´Â falsepublic void setPackageAssertionStatus(String packageName, boolean enabled)
p ¶ó´Â À̸§ÀÇ ÆÐŰÁöÀÇ ¼ºê ÆÐŰÁö´Â ¸ðµÎ À̸§ÀÌ ¡¸p. ¡¹(À¸)·Î ½ÃÀ۵˴ϴÙ. ¿¹¸¦ µé¾î, javax.swing.text´Â javax.swing ¼ºê ÆÐŰÁöÀÔ´Ï´Ù. ¶ÇÇÑ, java.util¿Í java.lang.reflect´Â ¾î´ÀÂÊÀ̳ª, java ¼ºê ÆÐŰÁöÀÔ´Ï´Ù.
1°³ÀÇ Å¬·¡½º¿¡ º¹¼öÀÇ µðÆúÆ® ÆÐŰÁö Àû¿ëµÇ´Â °æ¿ì¿¡´Â ±× Ŭ·¡½º¿¡ °¡Àå °ü·Ã¼ºÀÇ ³ôÀº µðÆúÆ® ÆÐŰÁö°¡ ´Ù¸¥ ÆÐŰÁö¿¡ ¿ì¼±ÇØ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, javax.lang °ú javax.lang.reflect¸¦ ¾î´ÀÂÊÀ̳ª °ü·ÃµÈ µðÆúÆ® ÆÐŰÁö¸¦ º¸°ü À¯ÁöÇÏ´Â °æ¿ì, ÈÄÀÚÀÇ µðÆúÆ® ÆÐŰÁö´Â javax.lang.reflect ³»ÀÇ Å¬·¡½º¿¡ Àû¿ëµË´Ï´Ù.
µðÆúÆ® ÆÐŰÁö´Â Ŭ·¡½º ·Î´õÀÇ µðÆúÆ® ¼±¾ð ½ºÅ×ÀÌÅͽºº¸´Ù ¿ì¼±µË´Ï´Ù. ´Ù¸¸, setClassAssertionStatus(String, boolean)
¸¦
È£ÃâÇÏ´Â °ÍÀ¸·Î Ŭ·¡½º ´ÜÀ§·Î ¿À¹ö¶óÀ̵å(override) ÇÒ ¼ö ÀÖ½À´Ï´Ù.
packageName
- ÆÐŰÁö µðÆúÆ® ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ ¼³Á¤ÇÏ´Â ÆÐŰÁö¸í. null Ä¡´Â ¡¸current¡¹ÀÇ ¹«¸í ÆÐŰÁöÀÎ °ÍÀ» ³ªÅ¸³½´Ù (¡¸Java ¾ð¾î »ç¾ç¡¹, ¼½¼Ç 7.4. 2)enabled
- ÀÌ Å¬·¡½º ·Î´õ¿¡ ÀÇÇØ ·Îµå µÇ¾î À̸§ ÷ºÎ ÆÐŰÁö ¶Ç´Â ±× ¼ºê ÆÐŰÁöÀÇ ¾î¶² °ÍÀΰ¡¿¡ ¼ÓÇϴ Ŭ·¡½º°¡ µðÆúÆ®·Î À¯È¿ÇÑ ¼±¾ðÀ» º¸°ü À¯ÁöÇÏ´Â °æ¿ì´Â true, µðÆúÆ®·Î ¹«È¿ÀÎ ¼±¾ðÀ» º¸°ü À¯ÁöÇÏ´Â °æ¿ì´Â falsepublic void setClassAssertionStatus(String className, boolean enabled)
À̸§ ÷ºÎ Ŭ·¡½º°¡ Åé ·¹º§ÀÇ Å¬·¡½º°¡ ¾Æ´Ñ °æ¿ì, ÀÌ È£ÃâÀº ¾î¶°ÇÑ Å¬·¡½ºÀÇ ¼±¾ð ½ºÅ×ÀÌÅͽº¿¡ ´ëÇØ¼µµ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¹Ýȯ°ªÀº ¹ÌÁ¤µµ¸®°¡ µË´Ï´Ù.
className
- ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ ¼³Á¤ÇÏ´Â Åé ·¹º§ÀÇ Å¬·¡½ºÀÇ ¿ÏÀü ¼ö½Ä Ŭ·¡½º¸íenabled
- ÃʱâȽÿ¡
À̸§ ÷ºÎ Ŭ·¡½º¿¡¼ ¼±¾ðÀ» À¯È¿ÇÏ°Ô ÇÏ´Â °æ¿ì´Â true, ¼±¾ðÀ» ¹«È¿·Î ÇÏ´Â °æ¿ì´Â falsepublic void clearAssertionStatus()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.