|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor | ¸Þ¼Òµå |
java.lang.Object | +--java.lang.ClassLoader
Ŭ·¡½º ·Î´õ´Â Ŭ·¡½ºÀÇ ·Îµå¸¦ ´ã´çÇÏ´Â ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù. ClassLoader
Ŭ·¡½º´Â Ãß»ó Ŭ·¡½ºÀÔ´Ï´Ù. Ŭ·¡½º¸íÀ» ÁöÁ¤Çϸé(ÀÚ), Ŭ·¡½º ·Î´õ´Â Ŭ·¡½ºÀÇ Á¤ÀǸ¦ ±¸¼ºÇÏ´Â µ¥ÀÌÅ͸¦ ã¾Æ³»´ÂÁö »ý¼ºÇÕ´Ï´Ù. ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î¼´Â À̸§À» ÆÄÀϸíÀ¸·Î º¯È¯ÇØ, ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ±× À̸§ÀÇ Å¬·¡½º ÆÄÀÏÀ» ÀоîµéÀÔ´Ï´Ù.
°¢ Class
¿ÀºêÁ§Æ®´Â ±× Class
¿ÀºêÁ§Æ®¸¦ Á¤ÀÇÇÑ ClassLoader
¿¡ÀÇ ÂüÁ¶
¸¦ ÀúÀåÇϰí ÀÖ½À´Ï´Ù.
¹è¿ Ŭ·¡½ºÀÇ Class ¿ÀºêÁ§Æ®´Â Ŭ·¡½º ·Î´õ¿¡ µû¶ó¼´Â ÀÛ¼ºµÇÁö ¾Ê°í Java Runtime ÀÇ ¿ä±¸¿¡ ÀÀÇØ ÀÚµ¿ÀûÀ¸·Î ÀÛ¼ºµË´Ï´Ù. ¹è¿ Ŭ·¡½ºÀÇ Å¬·¡½º ·Î´õ´Â Class.getClassLoader()
¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁ® ±× ¿ä¼ÒÀÇ ÇüÅÂÀÇ Å¬·¡½º ·Î´õ¿Í °°°Ô µË´Ï´Ù. ¿ä¼ÒÀÇ ÇüŰ¡ ¿ø½ÃÀûÇüÀÇ °æ¿ì¿¡´Â ¹è¿ Ŭ·¡½º¿¡ Ŭ·¡½º ·Î´õ´Â ¾ø½À´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀº Java °¡»ó ¸Ó½ÅÀÌ µ¿ÀûÀ¸·Î Ŭ·¡½º¸¦ ·ÎµåÇϵµ·Ï(µíÀÌ) È®ÀåÇϱâ À§ÇØ(¶§¹®¿¡),ClassLoader
ÀÇ ¼ºê Ŭ·¡½º¸¦ ±¸ÇöÇÕ´Ï´Ù.
Ŭ·¡½º ·Î´õ´Â ÀϹÝÀûÀ¸·Î, ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ ½ÃÅ¥·¯Æ¼ µµ¸ÞÀÎÀ» ³ªÅ¸³»±â À§Çؼ(¶§¹®¿¡) »ç¿ëµË´Ï´Ù.
ClassLoader
Ŭ·¡½º´Â delegate ¸ðµ¨À» »ç¿ëÇØ Ŭ·¡½º¿Í ¸®¼Ò½º¸¦ ã½À´Ï´Ù. ClassLoader
ÀÇ °¢ ÀνºÅϽº´Â °ü·ÃÇϴ ģŬ·¡½º ·Î´õ¸¦ °¡Áý´Ï´Ù. Ŭ·¡½º ¶Ç´Â ¸®¼Ò½º¸¦ ã¾Æ³»±â À§Çؼ(¶§¹®¿¡) ºÒ·Á °¡¸é(ÀÚ),ClassLoader
ÀνºÅϽº´Â ±× ÀÚü·Î Ŭ·¡½º ¶Ç´Â ¸®¼Ò½ºÀÇ °Ë»öÀ» ½ÃµµÇϱâ Àü¿¡, ±× °Ë»öÀ» ģŬ·¡½º¿¡ delegate ÇÕ´Ï´Ù. bootstrap Ŭ·¡½º ·Î´õ·Î ºÒ¸®´Â °¡»ó ¸Ó½ÅÀÇ ÆíÀÔ Å¬·¡½º ·Î´õ´Â ±× ÀÚü¿¡¼´Â ºÎ¸ð¸¦ °¡ÁöÁö ¾Ê°í ClassLoader
ÀνºÅϽºÀÇ ºÎ¸ð·Î¼ µ¿ÀÛÇÕ´Ï´Ù.
Åë»ó, Java °¡»ó ¸Ó½ÅÀº Ç÷§Æû¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â ¹æ¹ýÀ¸·Î ·ÎÄà ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ Å¬·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, UNIX ½Ã½ºÅÛ¿¡¼´Â CLASSPATH
ȯ°æ º¯¼ö¿¡ ÀÇÇØ Á¤ÀÇµÈ µð·ºÅ丮¿¡¼ Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù.
´Ù¸¸, ÆÄÀϷκÎÅÍ ÀÛ¼ºÇÒ ¼ö ¾ø´Â Ŭ·¡½ºµµ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Å¬·¡½º´Â ³×Æ®¿öÅ©µîÀÇ ´Ù¸¥ ¼Ò½º·ÎºÎÅÍ ÀÛ¼ºÇϰųª ¾îÇø®ÄÉÀ̼ÇÀÌ ±¸ÃàÇϰųª ÇÕ´Ï´Ù. ¸Þ¼Òµå defineClass
´Â ¹ÙÀÌÆ®ÀÇ ¹è¿À» Ŭ·¡½º Class
ÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. »õ·Ó°Ô Á¤ÀÇÇÑ Å¬·¡½ºÀÇ ÀνºÅϽº´Â Ŭ·¡½º Class
ÀÇ newInstance
¸¦ »ç¿ëÇØ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
Ŭ·¡½º ·Î´õ·Î ÀÛ¼ºÇÑ ¿ÀºêÁ§Æ®ÀÇ ¸Þ¼Òµå¿Í constructor Àº ´Ù¸¥ Ŭ·¡½º¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÂüÁ¶Çϴ Ŭ·¡½º¸¦ ÆÇÁ¤Çϱâ À§Çؼ, 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 . . . } }
Class
,
Class.newInstance()
,
defineClass(byte[], int, int)
,
loadClass(java.lang.String, boolean)
,
resolveClass(java.lang.Class)
»ý¼ºÀÚÀÇ °³¿ä | |
protected |
ClassLoader ()
getSystemClassLoader() ¸Þ¼Òµå¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁø ClassLoader ¸¦ ģŬ·¡½º ·Î´õ·Î¼ »ç¿ëÇØ, »õ·Î¿î Ŭ·¡½º ·Î´õ¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
|
protected |
ClassLoader (ClassLoader parent)
ÁöÁ¤µÈ ģŬ·¡½º ·Î´õ¸¦ »ç¿ëÇØ, delegateÀ» À§Çؼ(¶§¹®¿¡) »õ·Î¿î Ŭ·¡½º ·Î´õ¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
¸Þ¼ÒµåÀÇ °³¿ä | |
void |
clearAssertionStatus ()
ÀÌ Å¬·¡½º ·Î´õÀÇ µðÆúÆ® ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ false ·Î ¼³Á¤ÇØ, Ŭ·¡½º ·Î´õ°¡ °ü·ÃÁöÀ» ¼ö ÀÖ¾ú´ø µðÆúÆ® ÆÐŰÁö ¹× Ŭ·¡½º ¼±¾ð ½ºÅ×ÀÌÅͽº ¼³Á¤À» ¸ðµÎ ÆÄ±âÇÕ´Ï´Ù. |
protected Class |
defineClass (byte[] b,
int off,
int len)
Ãßõ µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù. defineClass(java.lang.String, byte[], int, int)·Î ¿Å°ÜÁ³½À´Ï´Ù. |
protected Class |
defineClass (String name,
byte[] b,
int off,
int len)
byte ÀÇ ¹è¿À» Class Ŭ·¡½ºÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. |
protected Class |
defineClass (String name,
byte[] b,
int off,
int len,
ProtectionDomain protectionDomain)
¿É¼ÇÀÇ ProtectionDomain ¸¦ »ç¿ëÇØ, ¹ÙÀÌÆ®ÀÇ ¹è¿À» 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)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â Ŭ·¡½º°¡ ÀÌ Å¬·¡½º ·Î´õ¿¡ ÀÇÇØ ¹ú½á ·Îµå µÇ°í ÀÖ´Â °æ¿ì, ±× Ŭ·¡½º¸¦ ã½À´Ï´Ù. |
protected URL |
findResource (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ¸®¼Ò½º¸¦ ã½À´Ï´Ù. |
protected Enumeration |
findResources (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ¸ðµç ¸®¼Ò½º¸¦ ³ªÅ¸³»´Â URL ÀÇ Enumeration ¸¦ µ¹·ÁÁÝ´Ï´Ù. |
protected Class |
findSystemClass (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â Ŭ·¡½º¸¦ ã¾Æ, Çʿ信 µû¶ó¼ ·ÎµåÇÕ´Ï´Ù. |
protected Package |
getPackage (String name)
ÀÌ Å¬·¡½º ·Î´õÀΰ¡ °Ô´Ù°¡ À§¿ÀºêÁ§Æ®ÀÇ ¾î¶² °Í µî¿¡ ÀÇÇØ¼ Á¤ÀÇµÈ Package ¸¦ µ¹·ÁÁÝ´Ï´Ù. |
protected Package [] |
getPackages ()
ÀÌ Å¬·¡½º ·Î´õ¿Í °Ô´Ù°¡ À§¿ÀºêÁ§Æ®¿¡ ÀÇÇØ Á¤ÀÇµÈ ¸ðµç Package ¸¦ µ¹·ÁÁÝ´Ï´Ù. |
ClassLoader |
getParent ()
delegateÀ» À§ÇÑ Ä£Å¬·¡½º ·Î´õ¸¦ µ¹·ÁÁÝ´Ï´Ù. |
URL |
getResource (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ¸®¼Ò½º¸¦ ã¾Æ³À´Ï´Ù. |
InputStream |
getResourceAsStream (String name)
ÁöÁ¤µÈ ¸®¼Ò½º¸¦ ÀоîµéÀÌ´Â ÀÔ·Â ½ºÆ®¸²À» µ¹·ÁÁÝ´Ï´Ù. |
Enumeration |
getResources (String name)
ÁöÁ¤µÈ À̸§À» °¡Áö´Â ¸ðµç ¸®¼Ò½º¸¦ ã½À´Ï´Ù. |
static ClassLoader |
getSystemClassLoader ()
delegateÀ» À§ÇÑ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ µ¹·ÁÁÝ´Ï´Ù. |
static URL |
getSystemResource (String name)
Ŭ·¡½º¸¦ ·ÎµåÇϱâ À§Çؼ(¶§¹®¿¡) »ç¿ëµÇ´Â °Ë»ö ÆÐ½º·ÎºÎÅÍ, ÁöÁ¤µÈ À̸§ÀÇ ¸®¼Ò½º¸¦ ã½À´Ï´Ù. |
static InputStream |
getSystemResourceAsStream (String name)
Ŭ·¡½º¸¦ ·ÎµåÇϴµ¥ »ç¿ëµÇ´Â °Ë»ö ÆÐ½º·ÎºÎÅÍ, ÁöÁ¤µÈ À̸§ÀÇ ¸®¼Ò½º¸¦, read¿ëÀ¸·Î ¿ÀÇÂÇÕ´Ï´Ù. |
static Enumeration |
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
¸Þ¼Òµå°¡ »õ·Î¿î Ŭ·¡½º ·Î´õÀÇ ÀÛ¼ºÀ» Çã°¡ÇÏÁö ¾Ê´Â °æ¿ìSecurityException
,
SecurityManager.checkCreateClassLoader()
protected ClassLoader()
getSystemClassLoader()
¸Þ¼Òµå¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁø ClassLoader
¸¦ ģŬ·¡½º ·Î´õ·Î¼ »ç¿ëÇØ, »õ·Î¿î Ŭ·¡½º ·Î´õ¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
ÀÌ constructor Àº »õ·Ó°Ô ÀÛ¼ºµÇ´Â Ŭ·¡½º ·Î´õÀÇ °¢°¢ ´ëÇØ ºÒ·Á °©´Ï´Ù. ClassLoader
Ŭ·¡½º´Â Ãß»ó Ŭ·¡½ºÀ̹ǷÎ,ClassLoader
Ŭ·¡½º ÀÚüÀÇ »õ·Î¿î ÀνºÅϽº¸¦ »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù. ´Ù¸¸,ClassLoader
ÀÇ ¼ºê Ŭ·¡½ºÀÇ °¢ constructor Àº ¸í½ÃÀû ¶Ç´Â ¾Ï¹¬Àû, Á÷Á¢Àû ¶Ç´Â °£Á¢ÀûÀ¸·Î °ü°è¾øÀÌ, ÇÊ¿¬ÀûÀ¸·Î ÀÌ constructor¸¦ È£ÃâÇÕ´Ï´Ù.
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkCreateClassLoader
¸Þ¼Òµå°¡ ºÒ·Á °©´Ï´Ù. À̰Ϳ¡ ÀÇÇØ ½ÃÅ¥·¯Æ¼ ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkCreateClassLoader
¸Þ¼Òµå°¡ »õ·Î¿î Ŭ·¡½º ·Î´õÀÇ ÀÛ¼ºÀ» Çã°¡ÇÏÁö ¾Ê´Â °æ¿ìSecurityException
,
SecurityManager.checkCreateClassLoader()
¸Þ¼ÒµåÀÇ »ó¼¼ |
public Class loadClass(String name) throws ClassNotFoundException
loadClass(String, boolean)
¸Þ¼Òµå¿Í °°Àº ¹æ¹ýÀ¸·Î Ŭ·¡½º¸¦ °Ë»öÇÕ´Ï´Ù. Java °¡»ó ¸Ó½ÅÀÌ ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇØ, Ŭ·¡½º ÂüÁ¶¸¦ ÇØ°áÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °ÍÀº loadClass(name, false)
¸¦ È£ÃâÇÏ´Â °Í¿¡ »ó´çÇÕ´Ï´Ù.
name
- Ŭ·¡½ºÀÇ À̸§
Class
¿ÀºêÁ§Æ®
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ìprotected Class loadClass(String name, boolean resolve) throws ClassNotFoundException
findLoadedClass(String)
¸¦ È£ÃâÇØ, Ŭ·¡½º°¡ ¹ú½á ·Îµå µÇ¾ú´ÂÁö ¾î¶°Çß´ÂÁö¸¦ È®ÀÎÇÑ´Ù
loadClass
¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. ºÎ¸ð°¡ null
ÀÇ °æ¿ì, °¡»ó ¸Ó½Å¿¡ Â¥³Ö¾îÁø Ŭ·¡½º ·Î´õ°¡ ´ë½Å¿¡ È£ÃâÇÑ´Ù
findClass(String)
¸Þ¼Òµå¸¦ È£ÃâÇØ, Ŭ·¡½º¸¦ ã´Â´Ù
resolve
Ç÷¡±×°¡ true ¶§¿¡´Â ÀÌ ¸Þ¼Òµå´Â ¹ß°ßµÈ Ŭ·¡½º ¿ÀºêÁ§Æ®¿¡ ´ëÇØ¼ resolveClass(Class)
¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
Java 2 SDK v1. 2 ÀÌÈÄ´Â ClassLoader ÀÇ ¼ºê Ŭ·¡½º°¡, ÀÌ ¸Þ¼Òµå´Â ¾Æ´Ï°í findClass(String)
¸¦ ¿À¹ö¶óÀ̵å(override) ÇÏ´Â °ÍÀÌ Ãßõ µÇ°í ÀÖ½À´Ï´Ù.
name
- Ŭ·¡½ºÀÇ À̸§resolve
- true
ÀÇ °æ¿ì´Â Ŭ·¡½º¸¦ ÇØ¼® ó¸®ÇÑ´Ù
Class
¿ÀºêÁ§Æ®
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ìprotected Class findClass(String name) throws ClassNotFoundException
loadClass
¸Þ¼Òµå¿¡ ÀÇÇØ ºÒ·Á °©´Ï´Ù. µðÆúÆ®ÀÇ ±¸ÇöÀº ClassNotFoundException
¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.
name
- Ŭ·¡½ºÀÇ À̸§
Class
¿ÀºêÁ§Æ®
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ìprotected final Class defineClass(byte[] b, int off, int len) throws ClassFormatError
Class
Ŭ·¡½ºÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. ÃÖÃʷΠŬ·¡½º¸¦ ÇØ°áÇÏÁö ¾ÊÀ¸¸é, Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ¸Þ¼Òµåº¸´Ù, Ŭ·¡½º¸íÀ» ÃÖÃÊÀÇ Àμö·Î¼ ÃëµæÇÏ´Â ¹öÁ¯ÀÌ ¾ÈÀüÇϱ⠶§¹®¿¡, ±× ¹öÁ¯À» »ç¿ëÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.
b
- Ŭ·¡½º µ¥ÀÌÅ͸¦ ±¸¼ºÇÏ´Â byte. off
·ÎºÎÅÍ off+len-1
±îÁöÀÇ À§Ä¡¿¡ ÀÖ´Â byte ´Â Java °¡»ó ¸Ó½Å »ç¾çÀ¸·Î Á¤ÀǵǴ À¯È¿ÇÑ Å¬·¡½º ÆÄÀÏÀÇ Çü½ÄÀ» °¡Áö´Âoff
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ b
³»ÀÇ °³½Ã ¿ÀÇÁ¼Â(offset)len
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ ±æÀÌ
Class
¿ÀºêÁ§Æ®
ClassFormatError
- µ¥ÀÌÅͰ¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
IndexOutOfBoundsException
- off
¶Ç´Â len
ÀÇ ¾î´À ÂÊÀÎÁö°¡ ºÎÀÇ °æ¿ì, ¶Ç´Â off+len
°¡ b.length
º¸´Ù Å« °æ¿ìloadClass(java.lang.String, boolean)
,
resolveClass(java.lang.Class)
protected final Class defineClass(String name, byte[] b, int off, int len) throws ClassFormatError
Class
Ŭ·¡½ºÀÇ ÀνºÅϽº·Î º¯È¯ÇÕ´Ï´Ù. ÃÖÃʷΠŬ·¡½º¸¦ ÇØ°áÇÏÁö ¾ÊÀ¸¸é, Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â µðÆúÆ®ÀÇ ProtectionDomain
¸¦, »õ·Ó°Ô Á¤ÀÇµÈ Å¬·¡½º¿¡ ÇÒ´çÇÕ´Ï´Ù. ProtectionDomain
´Â Policy.getPolicy(). getPermissions()
¿¡ÀÇ È£ÃâÀÌ null, null
ÀÇ ÄÚµå ¼Ò½º¸¦ »ç¿ëÇØ ÇàÇØÁ³À» ¶§¿¡ Çã°¡µÇ´Â ¾×¼¼½º±ÇÀ» º¸°ü À¯ÁöÇÕ´Ï´Ù. µðÆúÆ®ÀÇ µµ¸ÞÀÎÀº defineClass
ÀÇ ÃÖÃÊÀÇ È£Ãâ·Î ÀÛ¼ºµÇ¾î ±× ÈÄÀÇ È£Ãâ·Î Àç»ç¿ëµË´Ï´Ù.
ƯÁ¤ÀÇ ProtectionDomain
¸¦ Ŭ·¡½º¿¡ ÇÒ´çÇÏ·Á¸é ,ProtectionDomain
¸¦ ±× ÀμöÀÇ 1 °³·Î¼ ÃëÇÏ´Â defineClass
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
name
- Ŭ·¡½ºÀÇ À̸§À¸·Î¼ ±â´ëÇÏ´Â °Í. ºÒ¸íÇÑ °æ¿ì´Â null
. ´Ü¶ô ij¸¯ÅÍ¿¡´Â ¡¸/¡¹Àº ¾Æ´Ï°í ¡¸.¡¹(À»)¸¦ »ç¿ëÇÑ´Ù. Ŭ·¡½º¸íÀÇ µÚÀÇ Á¢¹Ì¸» ¡¸. class¡¹´Â ºÙÀÌÁö ¾Ê´Âb
- Ŭ·¡½º µ¥ÀÌÅ͸¦ ±¸¼ºÇÏ´Â byte. off
·ÎºÎÅÍ off+len-1
±îÁöÀÇ À§Ä¡¿¡ ÀÖ´Â byte ´Â Java °¡»ó ¸Ó½Å »ç¾çÀ¸·Î Á¤ÀǵǴ À¯È¿ÇÑ Å¬·¡½º ÆÄÀÏÀÇ Çü½ÄÀ» °¡Áö´Âoff
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ b
³»ÀÇ °³½Ã ¿ÀÇÁ¼Â(offset)len
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ ±æÀÌ
Class
¿ÀºêÁ§Æ®
ClassFormatError
- µ¥ÀÌÅͰ¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
IndexOutOfBoundsException
- off
¶Ç´Â len
ÀÇ ¾î´À ÂÊÀÎÁö°¡ ºÎÀÇ °æ¿ì, ¶Ç´Â off+len
°¡ b.length
º¸´Ù Å« °æ¿ì
SecurityException
- ÀÌ Å¬·¡½º¿Í´Â ´Ù¸¥ Áõ¸í¼ ¼¼Æ® (ºÎÈ£ ¾øÀ½)¸¦ »ç¿ëÇØ ¼¸íµÈ Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ÆÐŰÁö¿¡, ÀÌ Å¬·¡½º¸¦ Ãß°¡ÇÏ·Á°í ÇÏ´Â °æ¿ì, ¶Ç´Â Ŭ·¡½º¸íÀÌ ¡¸java.¡¹(À¸)·Î ½ÃÀ۵Ǵ °æ¿ìloadClass(java.lang.String, boolean)
,
resolveClass(java.lang.Class)
,
ProtectionDomain
,
Policy
,
CodeSource
,
SecureClassLoader
protected final Class defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) throws ClassFormatError
null
ÀÇ °æ¿ì´Â µðÆúÆ®ÀÇ µµ¸ÞÀÎÀÌ,defineClass(String, byte[], int, int)
ÀÇ ¹®¼·Î ÁöÁ¤µÇ°í ÀÖ´Â ´ë·Î Ŭ·¡½º¿¡ ÇÒ´çÇÒ ¼ö ÀÖ°í ÀÖ½À´Ï´Ù. ÃÖÃʷΠŬ·¡½º¸¦ ÇØ°áÇÏÁö ¾ÊÀ¸¸é, Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÆÐŰÁö·Î Á¤ÀǵǴ ÃÖÃÊÀÇ Å¬·¡½º´Â ±× ÆÐŰÁö³»¿¡¼ ¿¬¼ÓÇØ Á¤ÀÇµÈ ¸ðµç Ŭ·¡½º¿¡ ÀÖ´Â Áõ¸í¼ÀÇ Á¤È®ÇÑ ¼¼Æ®¸¦ ÆÇÁ¤ÇÕ´Ï´Ù. Ŭ·¡½ºÀÇ Áõ¸í¼¼¼Æ®´Â Ŭ·¡½ºÀÇ ProtectionDomain
³»ÀÇ CodeSource
·ÎºÎÅÍ ÃëµæÇÕ´Ï´Ù. ±× ÆÐŰÁö¿¡ Ãß°¡µÈ Ŭ·¡½º¿¡´Â µ¿ÀÏÇÑ Áõ¸í¼¼¼Æ®°¡ Æ÷ÇԵǾî ÀÖÀ» Çʿ䰡 ÀÖ¾î, Æ÷ÇÔµÇÁö ¾ÊÀº °æ¿ì´Â SecurityException
°¡ ½½·Î¿ì µË´Ï´Ù. name
Àμö°¡ null ÀÇ °æ¿ì, ÀÌ ÆÇº°Àº ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ¹Ýµå½Ã, Á¤ÀÇÇϴ Ŭ·¡½ºÀÇ À̸§À» ¹ÙÀÌÆ®¿Í ÇÔ²² °Ç³×ÁÙ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌ ÇØ °Ç³×ÁÖ¸é(ÀÚ), Á¤ÀÇÇϴ Ŭ·¡½º´Â ½ÇÁ¦·Î »ý°¢Çß´ø ´ë·ÎÀÇ Å¬·¡½º°¡ µË´Ï´Ù.
java. * ÆÐŰÁöÀÇ ¸ðµç Ŭ·¡½º´Â bootstrap Ŭ·¡½º ·Î´õ·Î ¹Û¿¡ Á¤ÀÇÇÒ ¼ö ¾ø±â ¶§¹®¿¡,"java. " ±×¸®°í ½ÃÀ۵Ǵ Ŭ·¡½º¸íÀ» ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù. À̸§ ÆÄ¶ó¹ÌÅÍ´Â null °¡ ¾Æ´Ñ °æ¿ì¿¡´Â ¹ÙÀÌÆ® ¹è¿ b ·Î ÁöÁ¤µÈ Ŭ·¡½ºÀÇ À̸§¿¡ µ¿ÀÏÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ì,ClassFormatError °¡ ½½·Î¿ì µË´Ï´Ù.
name
- Ŭ·¡½ºÀÇ À̸§À¸·Î¼ ±â´ëÇÏ´Â °Í. ºÒ¸íÇÑ °æ¿ì´Â null
. ´Ü¶ô ij¸¯ÅÍ¿¡´Â ¡¸/¡¹Àº ¾Æ´Ï°í ¡¸.¡¹(À»)¸¦ »ç¿ëÇÑ´Ù. Ŭ·¡½º¸íÀÇ µÚÀÇ Á¢¹Ì¸» ¡¸. class¡¹´Â ºÙÀÌÁö ¾Ê´Âb
- Ŭ·¡½º µ¥ÀÌÅ͸¦ ±¸¼ºÇÏ´Â byte. off
·ÎºÎÅÍ off+len-1
±îÁöÀÇ À§Ä¡¿¡ ÀÖ´Â byte ´Â Java °¡»ó ¸Ó½Å »ç¾çÀ¸·Î Á¤ÀǵǴ À¯È¿ÇÑ Å¬·¡½º ÆÄÀÏÀÇ Çü½ÄÀ» °¡Áö´Âoff
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ b
³»ÀÇ °³½Ã ¿ÀÇÁ¼Â(offset)len
- Ŭ·¡½º µ¥ÀÌÅÍÀÇ ±æÀÌprotectionDomain
- ÀÌ Å¬·¡½ºÀÇ ProtectionDomain
Class
¿ÀºêÁ§Æ®¿Í ÀÓÀÇÀÇ ProtectionDomain
ClassFormatError
- µ¥ÀÌÅͰ¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
IndexOutOfBoundsException
- off
¶Ç´Â len
ÀÇ ¾î´À ÂÊÀÎÁö°¡ ºÎÀÇ °æ¿ì, ¶Ç´Â off+len
°¡ b.length
º¸´Ù Å« °æ¿ì
SecurityException
- ÀÌ Å¬·¡½º¿Í´Â ´Ù¸¥ Áõ¸í¼ ¼¼Æ®¸¦ »ç¿ëÇØ ¼¸íµÈ Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ÆÐŰÁö¿¡, ÀÌ Å¬·¡½º¸¦ Ãß°¡ÇÏ·Á°í ÇÏ´Â °æ¿ì, ¶Ç´Â Ŭ·¡½º¸íÀÌ ¡¸java.¡¹(À¸)·Î ½ÃÀ۵Ǵ °æ¿ìprotected final void resolveClass(Class c)
c
°¡ ¹ú½á ¸µÅ© µÇ°í ÀÖ´Â °æ¿ì, ÀÌ ¸Þ¼Òµå´Â ´ÜÁö º¹±ÍÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, Java ¾ð¾î »ç¾çÀÇ ¡¸Execution¡¹ÀÇ ÀåÀ¸·Î ¼³¸íÇϰí ÀÖ°Ô, Ŭ·¡½º´Â ¸µÅ© µË´Ï´Ù.
c
- ¸µÅ© Çϴ Ŭ·¡½º
NullPointerException
- c
°¡ null
ÀÇ °æ¿ìdefineClass(java.lang.String, byte[], int, int)
protected final Class findSystemClass(String name) throws ClassNotFoundException
Java 2 SDK º¸´Ù Àü¿¡¼´Â ÀÌ ¸Þ¼Òµå´Â ·ÎÄà ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ Å¬·¡½º¸¦ Ç÷§Æû¿¡ ÀÇÁ¸ÇÑ ¹æ¹ýÀ¸·Î ·ÎµåÇØ, °ü·ÃÇÑ Å¬·¡½º ·Î´õ°¡ ¾ø´Â Ŭ·¡½º ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
Java 2 SDK v1. 2 ÀÌÈÄ, ÀÌ ¸Þ¼Òµå´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ (getSystemClassLoader()
¸¦ ÂüÁ¶)¸¦ »ç¿ëÇØ Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. µ¹·ÁÁÖ¾îÁö´Â Ŭ·¡½º ¿ÀºêÁ§Æ®´Â ±× Ŭ·¡½º ¿ÀºêÁ§Æ®¿¡ °ü·ÃÇÑ ClassLoader
¸¦ °¡Áö°Ô µË´Ï´Ù. ClassLoader
ÀÇ ¼ºê Ŭ·¡½º´Â Åë»ó, ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. À̰ÍÀº ´ëºÎºÐÀÇ Å¬·¡½º ·Î´õ°¡ findClass(String)
¸¸À» ¿À¹ö¶óÀ̵å(override) Çϸé ÁÁ±â ¶§¹®ÀÔ´Ï´Ù.
name
- °Ë»öµÇ´Â Ŭ·¡½ºÀÇ À̸§
name
Ŭ·¡½ºÀÇ Class
¿ÀºêÁ§Æ®
ClassNotFoundException
- Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ìClassLoader(ClassLoader)
,
getParent()
public final ClassLoader getParent()
null
¸¦ »ç¿ëÇØ, bootstrap Ŭ·¡½º ·Î´õ¸¦ ³ªÅ¸³»´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â ÀÌ Å¬·¡½º ·Î´õÀÇ ºÎ¸ð°¡ bootstrap Ŭ·¡½º ·Î´õÀÇ °æ¿ì¿¡, ±×·¯ÇÑ ±¸ÇöÀ¸·Î null
¸¦ µ¹·ÁÁÝ´Ï´Ù.
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì, È£ÃâÃøÀÇ Å¬·¡½º ·Î´õ°¡ null °¡ ¾Æ´Ï°í, ÀÌ Å¬·¡½º ·Î´õÀÇ »óÀ§ ¿ÀºêÁ§Æ®µµ ¾Æ´Ñ °æ¿ì´Â ÀÌ ¸Þ¼Òµå´Â RuntimePermission("getClassLoader")
¾×¼¼½º±ÇÀ» »ç¿ëÇØ ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkPermission
¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °Í¿¡ ÀÇÇØ, ģŬ·¡½º ·Î´õ¿¡ ¹®Á¦ ¾ø°Ô ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â °ÍÀ» ÇÁ·ÎÅØ¼ÇÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â SecurityException
°¡ ½½·Î¿ì µË´Ï´Ù.
ClassLoader
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkPermission
¸Þ¼Òµå°¡ ÀÌ Å¬·¡½º ·Î´õÀÇ Ä£Å¬·¡½º ·Î´õ¿¡°Ô·ÎÀÇ ¾×¼¼½º¸¦ Çã°¡ÇÏÁö ¾Ê´Â °æ¿ìSecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
protected final void setSigners(Class c, Object [] signers)
c
- Class
¿ÀºêÁ§Æ®signers
- Ŭ·¡½ºÀÇ ¼¸íÀÚprotected final Class findLoadedClass(String name)
name
- Ŭ·¡½º¸í
Class
¿ÀºêÁ§Æ®. Ŭ·¡½º°¡ ·ÎµåµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â null
public URL getResource(String name)
¸®¼Ò½ºÀÇ À̸§Àº ¡¸/¡¹À¸·Î ´Ü¶ôÁö¾îÁø ÆÐ½º¸íÀ̸ç, À̰Ϳ¡ ÀÇÇØ ¸®¼Ò½º°¡ ½Äº°µË´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â ¿ì¼± ¸®¼Ò½ºÀÇ Ä£Å¬·¡½º ·Î´õ¸¦ °Ë»öÇÕ´Ï´Ù. ºÎ¸ð°¡ null
ÀÇ °æ¿ì, °¡»ó ¸Ó½Å¿¡ Â¥³Ö¾îÁø Ŭ·¡½º ·Î´õÀÎ ÆÐ½º°¡ °Ë»öµË´Ï´Ù. °Å±â¿¡ ½ÇÆÐÇϸé(ÀÚ), ÀÌ ¸Þ¼Òµå´Â ¸®¼Ò½º¸¦ ã¾Æ³»±â À§Çؼ(¶§¹®¿¡) findResource
¸¦ È£ÃâÇÕ´Ï´Ù.
name
- ¸®¼Ò½º¸í
null
findResource(String)
public final Enumeration getResources(String name) throws IOException
¸®¼Ò½ºÀÇ À̸§Àº ¡¸/¡¹À¸·Î ´Ü¶ôÁö¾îÁø ÆÐ½º¸íÀ̸ç, À̰Ϳ¡ ÀÇÇØ ¸®¼Ò½º°¡ ½Äº°µË´Ï´Ù.
°Ë»ö¼ø¼¿¡ ´ëÇØ¼´Â getResource(String)
ÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
name
- ¸®¼Ò½º¸í
IOException
- ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìgetResource(java.lang.String)
,
findResources(java.lang.String)
protected Enumeration findResources(String name) throws IOException
name
- ¸®¼Ò½º¸í
IOException
- ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìprotected URL findResource(String name)
name
- ¸®¼Ò½º¸í
null
public static URL getSystemResource(String name)
JDK 1.1 ¿¡¼´Â »ç¿ëµÇ´Â °Ë»ö ÆÐ½º´Â °¡»ó ¸Ó½ÅÀÇ ÆíÀÔ Å¬·¡½º ·Î´õÀÇ °Ë»ö ÆÐ½ºÀÔ´Ï´Ù.
Java 2 SDK v1. 2 ÀÌÈÄ´Â ÀÌ ¸Þ¼Òµå´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ (getSystemClassLoader()
¸¦ ÂüÁ¶)¸¦ »ç¿ëÇØ ¸®¼Ò½º¸¦ ã¾Æ³À´Ï´Ù.
name
- ¸®¼Ò½º¸í
null
public static Enumeration getSystemResources(String name) throws IOException
URL
¿ÀºêÁ§Æ®ÀÇ Enumeration
·Î¼ µ¹·ÁÁÖ¾îÁý´Ï´Ù.
°Ë»ö¼ø¼¿¡ ´ëÇØ¼´Â getSystemResource(String)
ÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
name
- ¸®¼Ò½º¸í
IOException
- ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìpublic InputStream getResourceAsStream(String name)
getResource(String)
ÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
name
- ¸®¼Ò½º¸í
null
public static InputStream getSystemResourceAsStream(String name)
°Ë»ö¼ø¼¿¡ ´ëÇØ¼´Â getSystemResource(String)
ÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
name
- ¸®¼Ò½º¸í
null
public static ClassLoader getSystemClassLoader()
ClassLoader
ÀνºÅϽºÀÇ µðÆúÆ®ÀÇ delegateÀÇ ºÎ¸ð·Î, Åë»ó, ¾îÇø®ÄÉÀ̼ÇÀ» ±âµ¿Çϱâ À§ÇÑ Å¬·¡½º ·Î´õÀÔ´Ï´Ù.
ÀÌ ¸Þ¼Òµå°¡ ÃÖÃÊ·Î ºÒ·Á °¡´Â °ÍÀº ½ÇÇà½ÃÀÇ ±âµ¿ ¼øÂ÷ ¼ø¼ÀÇ ÃʱâÀÔ´Ï´Ù. ÀÌ ½ÃÁ¡¿¡¼, ¸Þ¼Òµå´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ ÀÛ¼ºÇØ, È£ÃâÇÏ´Â Thread ÀÇ ¹®¸Æ Ŭ·¡½º ·Î´õ¿¡ ±×°ÍÀ» ¼³Á¤ÇÕ´Ï´Ù.
µðÆúÆ®ÀÇ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ´Â ÀÌ Å¬·¡½ºÀÇ ±¸Çö ÀÇÁ¸ ÀνºÅϽºÀÔ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ È£Ãâ½Ã¿¡, ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ java.system.class.loader °¡ Á¤ÀǵǴ °æ¿ì, ÀÌ ÇÁ·ÎÆÛƼÀÇ °ªÀÌ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ·Î¼ µ¹·ÁÁÖ¾îÁö´Â Ŭ·¡½ºÀÇ À̸§ÀÌ µË´Ï´Ù. ÀÌ Å¬·¡½º´Â µðÆúÆ®ÀÇ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ »ç¿ëÇØ ·Îµå µË´Ï´Ù. ¶Ç, ÀÌ Å¬·¡½º´Â delegateÀÇ ºÎ¸ð·Î¼ »ç¿ëµÇ´Â ClassLoader ÇüÀÇ ´ÜÀÏÀÇ ÆÄ¶ó¹ÌÅ͸¦ ÃëÇÏ´Â public constructor¸¦ Á¤ÀÇÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡, ÀÌ constructor¸¦ »ç¿ëÇØ, µðÆúÆ®ÀÇ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¸¦ ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇØ, ÀνºÅϽº°¡ ÀÛ¼ºµË´Ï´Ù. ÀÛ¼ºµÈ Ŭ·¡½º ·Î´õ´Â ½Ã½ºÅÛ Å¬·¡½º ·Î´õ·Î¼ Á¤Àǵ˴ϴÙ.
½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â °æ¿ì, È£ÃâÃøÀÇ Å¬·¡½º ·Î´õ°¡ null °¡ ¾Æ´Ï°í, ÀÌ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¿Í °°Áö ¾Ê°í ÀÌ ½Ã½ºÅÛ Å¬·¡½º ·Î´õÀÇ »óÀ§ ¿ÀºêÁ§Æ®µµ ¾Æ´Ï¸é, ÀÌ ¸Þ¼Òµå´Â RuntimePermission("getClassLoader")
¾×¼¼½º±ÇÀ» »ç¿ëÇØ ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkPermission
¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °Í¿¡ ÀÇÇØ, ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¿¡ ¹®Á¦ ¾ø°Ô ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â °ÍÀ» ÇÁ·ÎÅØ¼ÇÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â SecurityException
°¡ ½½·Î¿ì µË´Ï´Ù.
ClassLoader
. ¾ø´Â °æ¿ì´Â null
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkPermission
¸Þ¼Òµå°¡ ÀÌ ½Ã½ºÅÛ Å¬·¡½º ·Î´õ¿¡°Ô·ÎÀÇ ¾×¼¼½º¸¦ Çã°¡ÇÏÁö ¾Ê´Â °æ¿ì
IllegalStateException
- java.system.class.loader
ÇÁ·ÎÆÛƼ¿¡ ÀÇÇØ ÁöÁ¤µÈ Ŭ·¡½º ·Î´õÀÇ ±¸Ãà½Ã¿¡, Àç±ÍÀûÀ¸·Î ºÒ·Á °¡´Â °æ¿ì
Error
- ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ java.system.class.loader ´Â Á¤ÀǵÇÁö¸¸, À̸§ ÷ºÎ Ŭ·¡½º¸¦ ·ÎµåÇÒ ¼ö ¾ø´Â °æ¿ì, ÇÁ·Î¹ÙÀÌ´õ Ŭ·¡½º´Â Çʼö constructor¸¦ Á¤ÀÇÇÏÁö ¾Ê´ÂÁö ±× È£Ãâ½Ã¿¡ ¿¹¿Ü°¡ ½½·Î¿ì µÈ´Ù. ¿¡·¯ÀÇ ±Ùº» ¿øÀÎÀº Throwable.getCause()
¸Þ¼Òµå¸¦ »ç¿ëÇØ ÃëµæÇÒ ¼ö ÀÖ´ÂSecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
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 ¸¦ °í·ÁÇØ ¾Á µÈ´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, ÆÐŰÁö´Â ¾Á µÇÁö ¾Ê´Â´Ù
Package
¿ÀºêÁ§Æ®
IllegalArgumentException
- ÆÐŰÁö¸íÀÌ, ÀÌ Å¬·¡½º ·Î´õÀΰ¡ ¶Ç´Â °Ô´Ù°¡ À§¿ÀºêÁ§Æ® °¡¿îµ¥ 1 °³¿¡ Á¸ÀçÇÏ´Â ÆÐŰÁö¿Í Áߺ¹ ÇÏ´Â °æ¿ìprotected Package getPackage(String name)
name
- ÆÐŰÁö¸í
protected Package [] getPackages()
ClassLoader
¿¡ ÀÇÇØ Á¤ÀÇµÈ Package
¿ÀºêÁ§Æ®ÀÇ ¹è¿protected String findLibrary(String libname)
null
¸¦ µ¹·ÁÁÖ´Â °æ¿ì, VM ´Â java.library.path
ÇÁ·ÎÆÛƼ·Î ÁöÁ¤µÈ ÆÐ½º¿¡ µû¶ó ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦ °Ë»öÇÕ´Ï´Ù.
libname
- ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸í
System.loadLibrary(java.lang.String)
,
System.mapLibraryName(java.lang.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" ÀÇ ¹«¸í ÆÐŰÁöÀÎ °ÍÀ» ³ªÅ¸³½´Ù (JLS 7.4. 2)enabled
- ÀÌ Å¬·¡½º ·Î´õ¿¡ ÀÇÇØ ·Îµå µÇ¾î À̸§ ÷ºÎ ÆÐŰÁö ¶Ç´Â ±× ¼ºê ÆÐŰÁöÀÇ ¾î¶² °ÍÀΰ¡¿¡ ¼ÓÇϴ Ŭ·¡½º°¡, µðÆúÆ®·Î À¯È¿ÇÑ ¼±¾ðÀ» º¸°ü À¯ÁöÇÏ´Â °æ¿ì´Â true, µðÆúÆ®·Î ¹«È¿ÀÎ ¼±¾ðÀ» º¸°ü À¯ÁöÇÏ´Â °æ¿ì´Â falsepublic void setClassAssertionStatus(String className, boolean enabled)
À̸§ ÷ºÎ Ŭ·¡½º°¡ Åé ·¹º§ÀÇ Å¬·¡½º°¡ ¾Æ´Ñ °æ¿ì, ÀÌ È£ÃâÀº ¾î¶°ÇÑ Å¬·¡½ºÀÇ ¼±¾ð ½ºÅ×ÀÌÅͽº¿¡ ´ëÇØ¼µµ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¹Ýȯ°ªÀº ¹ÌÁ¤µµ¸®°¡ µË´Ï´Ù.
className
- ¼±¾ð ½ºÅ×ÀÌÅͽº¸¦ ¼³Á¤ÇÏ´Â Åé ·¹º§ÀÇ Å¬·¡½ºÀÇ ¿ÏÀü ¼ö½Ä Ŭ·¡½º¸íenabled
- ÃʱâȽÿ¡, À̸§ ÷ºÎ Ŭ·¡½º¿¡¼ ¼±¾ðÀ» À¯È¿ÇÏ°Ô ÇÏ´Â °æ¿ì´Â true, ¼±¾ðÀ» ¹«È¿·Î ÇÏ´Â °æ¿ì´Â falsepublic void clearAssertionStatus()
|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor | ¸Þ¼Òµå |
Java, Java 2 D, ¹× JDBC ´Â ¹Ì±¹ ¹× ±× ¿ÜÀÇ ³ª¶ó¿¡ ÀÖ¾î¼ÀÇ ¹Ì±¹ Sun Microsystems, Inc. ÀÇ »óÇ¥ ȤÀº µî·Ï»óÇ¥ÀÔ´Ï´Ù.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.