ÇÁ·Î±×·¥ÀÇ ¼Ò½º ÄÚµå ¾ò±â

ƯÁ¤ÇÑ Á¾·ùÀÇ ½ÇÇà ¸ðµåÀÇ °æ¿ì ÄÚµåÀÇ ÇöÀç È®ÀåÁ¡°ú ´ëÀÀÇÏ´Â ¼Ò½º Äڵ带 ¾ò´Â °ÍÀÌ Áß¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ÀϹÝÀûÀ¸·Î ÇÁ·Î±×·¥À» µð¹ö±× ¶Ç´Â ÇÁ·ÎÆÄÀϸµÇÒ ¶§ Áß¿äÇÕ´Ï´Ù. Ç÷¯±×ÀÎÀÌ ¼Ò½º ÄÚµå ã±â¸¦ Áö¿øÇÒ ¼ö Àִ Ŭ·¡½º¸¦ µî·ÏÇÒ ¼ö ÀÖ´Â ¿©·¯ °¡Áö È®ÀåÁ¡ÀÌ µð¹ö±× Ç÷¯±×Àο¡ ÀÇÇØ Á¦°øµË´Ï´Ù.

¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ

ISourceLocator ¹× IPersistableSourceLocator´Â ½ÇÇà ÇÁ·Î±×·¥¿¡¼­ ´Ù½Ã ¼Ò½º ÄÚµå·Î ¸ÊÇÎÇϱâ À§ÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÕ´Ï´Ù.

¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ´Â ÀϹÝÀûÀ¸·Î ÇØ´ç ½ÇÇà ±¸¼º ¹× ½ÇÇà ±¸¼º À§ÀÓ°ú ÇÔ²² ÀÛµ¿Çϵµ·Ï ±¸ÇöµË´Ï´Ù. ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ ID´Â ½ÇÇà ±¸¼º À¯ÇüÀÌ Á¤ÀÇµÉ ¶§ ÁöÁ¤µÉ ¼ö Àְųª, ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID ¼Ó¼ºÀ» »ç¿ëÇÏ¿© ½ÇÇà ±¸¼º°ú ÇÁ·Î±×·¥ ¹æ½ÄÀ¸·Î ¿¬°üµÉ ¼ö ÀÖ½À´Ï´Ù. ¾î´À °æ¿ì¿¡³ª ÀÏÁ¤ ½ÃÁ¡¿¡¼­ ±¸¼ºÀ» À§ÇÑ ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚÀÇ ID°¡ ½ÇÁ¦·Î IPersistableSourceLocator¸¦ ±¸ÇöÇϴ Ŭ·¡½º·Î ÇØ¼®µÇ¾î¾ß ÇÕ´Ï´Ù. ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ ID¿Í ±×ÀÇ Å¬·¡½º »çÀÌÀÇ ¿¬°üÀº org.eclipse.debug.core.sourceLocators È®ÀåÁ¡À» »ç¿ëÇÏ¿© ¼³Á¤µË´Ï´Ù.

´ÙÀ½ ¸¶Å©¾÷ÀÇ Ãâó´Â Java µµ±¸ÀÔ´Ï´Ù.

<extension point = "org.eclipse.debug.core.sourceLocators">
	<sourceLocator
		id = "org.eclipse.jdt.debug.ui.javaSourceLocator"
	   	class="org.eclipse.jdt.debug.ui.JavaUISourceLocator"
	   	name="%javaSourceLocator"/>
   </extension>

½ÇÇà ±¸¼ºÀÌ °è¼Ó À¯ÁöµÉ ¼ö ÀÖÀ¸¹Ç·Î ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ ID´Â ½ÇÇà ±¸¼º°ú ÇÔ²² ÀúÀåµÉ ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ¸¦ ÀνºÅϽºÈ­ÇÒ ½Ã°£ÀÏ ¶§ µð¹ö±× Ç÷¯±×ÀÎÀº ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ ID ¼Ó¼ºÀ» ã°í ÇØ´ç ID¿Í ¿¬°üµÈ Ŭ·¡½º¸¦ ÀνºÅϽºÈ­ÇÕ´Ï´Ù.

¼Ò½º ã¾Æº¸±â¸¦ À§ÇÑ ±¸ÇöÀº ¹Ýµå½Ã ½ÇÇàµÉ ÇÁ·Î±×·¥ÀÇ À¯Çü¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. ±×·¯³ª Ç÷§ÆûÀº µð·ºÅ丮, zip ÆÄÀÏ, jar ÆÄÀÏ ¹× À¯»ç ÆÄÀÏÀ» Æ÷ÇÔÇÏ´Â ÁÖ¾îÁø °æ·Î¿¡¼­ ¼Ò½º ÆÄÀÏÀ» ã´Â ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ¿¡ ´ëÇÑ Ãß»ó ±¸ÇöÀ» Á¤ÀÇÇÕ´Ï´Ù. ÀÌ ±¸ÇöÀ» Ȱ¿ëÇϱâ À§ÇØ Ç÷¯±×ÀÎÀÌ AbstractSourceLookupDirector¸¦ È®ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÁ¤ ±¸Çö¿¡¼­ ÇÊ¿äÇÑ ¸ðµç °ÍÀº ½ºÅà ÇÁ·¹ÀÓÀ» ÆÄÀÏ À̸§¿¡ ¸ÊÇÎÇÏ´Â ÀûÇÕÇÑ ISourceLookupParticipant¸¦ Á¦°øÇÏ´Â ±â´ÉÀÔ´Ï´Ù. ¿¹Á¦¿¡ ´ëÇØ¼­´Â AbstractSourceLookupDirectorÀÇ È®ÀåÀÚ¸¦ ÂüÁ¶ÇϽʽÿÀ.

¼Ò½º °æ·Î ÄÄÇ»ÅÍ

AbstractSourceLookupDirector´Â ƯÁ¤ ¼Ò½º ÄÚµå ã¾Æº¸±â °æ·Î¿¡ µû¶ó ¼Ò½º ÆÄÀÏÀ» °Ë»öÇÕ´Ï´Ù. ÀÌ °æ·Î´Â ISourceContainerÀÇ ¹è¿­·Î¼­ Ç¥ÇöµË´Ï´Ù. ¼Ò½º¿¡ ´ëÇØ °Ë»öÇØ¾ß ÇÏ´Â ¼Ò½º ÄÁÅ×À̳ʴ ÀϹÝÀûÀ¸·Î ½ÇÇàµÇ´Â ƯÁ¤ ¼Ò½º ±¸¼º¿¡ µû¶ó °è»êµË´Ï´Ù. ISourcePathComputer´Â ½ÇÇà ±¸¼º¿¡ ´ëÇÑ Àû´çÇÑ ¼Ò½º °æ·Î¸¦ °è»êÇÏ´Â ¿ÀºêÁ§Æ®¿ë ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¼Ò½º °æ·Î ÄÄÇ»ÅÍ´Â ¼Ò½º À§Ä¡ ÁöÁ¤ÀÚ¿Í ¾ÆÁÖ À¯»çÇÏ°Ô ID¿¡ ÀÇÇØ ÁöÁ¤µÇ¸ç, ½ÇÇà ±¸¼º À¯Çü¿¡ ´ëÇÑ È®Àå Á¤ÀÇ¿¡ ÁöÁ¤µÇ°Å³ª ½ÇÇà ±¸¼º¿¡ ´ëÇØ ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID ¼Ó¼ºÀ» ¼³Á¤ÇÏ¿© ÇÁ·Î±×·¥ ¹æ½ÄÀ¸·Î ¿¬°üµÉ ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º °æ·Î ÄÄÇ»ÅÍ¿¡ ´ëÇÑ ID´Â org.eclipse.debug.core.sourcePathComputers È®ÀåÁ¡¿¡¼­ Ŭ·¡½º ±¸Çö°ú ¿¬°üµË´Ï´Ù. ´ÙÀ½ ¸¶Å©¾÷Àº Java ¼Ò½º °æ·Î ÄÄÇ»ÅÍ¿¡ ´ëÇÑ JDT°¡ »ç¿ëÇÏ´Â Á¤ÀǸ¦ º¸¿©ÁÝ´Ï´Ù.

<extension point="org.eclipse.debug.core.sourcePathComputers">
	<sourcePathComputer
		id="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer"
		class="org.eclipse.jdt.launching.sourcelookup.containers.JavaSourcePathComputer">
 	</sourcePathComputer>
 	...

¼Ò½º °æ·Î ÄÄÇ»ÅÍ´Â ¼Ò½º ã¾Æº¸±â °æ·Î¸¦ Ç¥½ÃÇÏ´Â ISourceContainerÀÇ ¹è¿­À» °è»êÇÒ Ã¥ÀÓÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î Java ¼Ò½º °æ·Î ÄÄÇ»ÅÍ´Â °æ·Î¸¦ ºôµåÇÒ ¶§ Ŭ·¡½º °æ·Î¸¦ °í·ÁÇÕ´Ï´Ù.

¼Ò½º ÄÁÅ×ÀÌ³Ê À¯Çü

¼Ò½º ã¾Æº¸±â °æ·ÎÀÇ ºÎºÐÀ¸·Î ÁöÁ¤µÇ´Â ÄÁÅ×À̳ʴ ISourceContainer¸¦ ±¸ÇöÇØ¾ß Çϴµ¥, ÀÌ´Â À̸§ ÁöÁ¤µÈ ¼Ò½º ¿ä¼Ò¿¡ ´ëÇØ Ç¥½ÃµÇ´Â ÄÁÅ×À̳ʸ¦ °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º Äڵ尡 ÀúÀåµÇ´Â ¿©·¯ °¡Áö Á¾·ùÀÇ Àå¼Ò¸¦ Ç¥½ÃÇϱâ À§ÇØ ¿©·¯ °¡Áö Á¾·ùÀÇ ¼Ò½º ÄÁÅ×À̳ʰ¡ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î JDT´Â Java ÇÁ·ÎÁ§Æ®ÀÇ ¼Ò½º, Ŭ·¡½º °æ·ÎÀÇ ¼Ò½º ¹× ÆÐŰÁö ´ÜÆíÀÇ ¼Ò½º¸¦ Ç¥½ÃÇÏ´Â ¼Ò½º ÄÁÅ×À̳ʸ¦ Á¤ÀÇÇÕ´Ï´Ù. ½ÇÇà ±¸¼º¿¡ »ç¿ëµÇ´Â ¼Ò½º ÄÁÅ×À̳ʴ ½ÇÇà ±¸¼º¿¡ ID·Î ÀúÀåµÉ ¼ö ÀÖ½À´Ï´Ù. ½ÇÇà ±¸¼ºÀÌ Áö¼ÓµÉ ¼ö Àֱ⠶§¹®¿¡ ¼Ò½º ÄÁÅ×À̳ÊÀÇ ID¸¦ ±¸Çö Ŭ·¡½º¿Í ¿¬°ü½ÃŰ´Â ¹æ¹ýÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. À̰ÍÀº org.eclipse.debug.core.sourceContainerTypes È®ÀåÁ¡À» »ç¿ëÇÏ¿© ¼öÇàµË´Ï´Ù. ´ÙÀ½ ¿¹´Â JDT¿¡¼­ ¿Â °ÍÀÔ´Ï´Ù.

<extension point="org.eclipse.debug.core.sourceContainerTypes">
	<sourceContainerType
		id="org.eclipse.jdt.launching.sourceContainer.javaProject"
		name="%javaProjectSourceContainerType.name"
		description="%javaProjectSourceContainerType.description"
		class="org.eclipse.jdt.internal.launching.JavaProjectSourceContainerTypeDelegate">
	</sourceContainerType> 
	...