ÀÌ Àý¿¡¼´Â Java ºôµå °æ·Î ¼³Á¤ ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ÀÌ ºôµå °æ·Î´Â Java ÇÁ·ÎÁ§Æ®¸¦ ºôµåÇϱâ À§ÇØ »ç¿ëµÇ´Â Ŭ·¡½º °æ·ÎÀÔ´Ï´Ù(IJavaProject).
°£´ÜÇÏ°Ô Å¬·¡½º °æ·Î´Â »ç¿ë °¡´ÉÇÑ À¯ÇüÀ» ¼³¸íÇϴ Ŭ·¡½º °æ·Î Ç׸ñ(IClassPathEntry)ÀÇ ¹è¿ÀÔ´Ï´Ù. À¯ÇüÀº ¼Ò½º ¶Ç´Â 2Áø ¾ç½ÄÀ¸·Î Ç¥½ÃµÉ ¼ö ÀÖÀ¸¸ç °æ·Î¿¡¼ÀÇ Ç׸ñ ¼ø¼¿¡ µû¶ó ºôµå Áß À¯ÇüÀ» ºÐ¼®Çϱâ À§ÇÑ Ã£¾Æº¸±â ¼ø¼°¡ Á¤Àǵ˴ϴÙ.
Java ºôµå °æ·Î´Â Java ÇÁ·ÎÁ§Æ® ¿ä¼Ò ±¸Á¶¿¡ ¹Ý¿µµË´Ï´Ù. ÇÁ·ÎÁ§Æ®¿¡ ÆÐŰÁö ´ÜÆí ·çÆ®(IPackageFragmentRoot)¸¦ Á¶È¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢°¢ÀÇ Å¬·¡½º °æ·Î Ç׸ñÀº Çϳª ÀÌ»óÀÇ ÆÐŰÁö ´ÜÆí ·çÆ®¿¡ ¸ÊÇεǸç, °¢ ·çÆ®¿¡´Â ÆÐŰÁö ´ÜÆí ¼¼Æ®°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
ºôµå °æ·Î¿¡ ´ëÇÑ ÀÌ ¼³¸í¿¡¼´Â ºôµå °æ·Î¿Í º°µµ·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Â Java ·±Å¸ÀÓ °æ·Î´Â ´Ù·çÁö ¾Ê½À´Ï´Ù. (·±Å¸ÀÓ Å¬·¡½º °æ·Î¿¡ ´ëÇÑ ¼³¸íÀº Java ÄÚµå ½ÇÇàÀ» ÂüÁ¶ÇϽʽÿÀ.)
ÇØ´ç ÇÁ·ÎÁ§Æ®ÀÇ Java ¿ä¼Ò¿¡
setRawClasspath¸¦ »ç¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®ÀÇ ºôµå °æ·Î¸¦ ÇÁ·Î±×·¡¹ÖÇÏ¿© º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ ÄÚµå´Â ÇÁ·ÎÁ§Æ® ÀÚ¿øÀÇ Å¬·¡½º °æ·Î¸¦ ¼³Á¤ÇÕ´Ï´Ù.
IProject project = ... // get some project resource
IJavaProject javaProject = JavaCore.create(project);
IClasspathEntry[] newClasspath = ...;
javaProject.setRawClasspath(newClasspath, someProgressMonitor);
(Âü°í: "¿ø·¡" Ŭ·¡½º °æ·Î¶ó´Â ¿ë¾î´Â ºÐ¼®µÇÁö ¾ÊÀº Ç׸ñ À§Ä¡¸¦ ¼³¸íÇϱâ À§ÇØ º¯¼ö°¡ »ç¿ëµÇ¾úÀ½À» °Á¶ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.)
Java ºôµå °æ·Î´Â ÇÁ·ÎÁ§Æ®ÀÇ ÆÄÀÏ ±¸Á¶¿¡¼ '.classpath'¶ó´Â ÆÄÀÏ¿¡ ÀÖ½À´Ï´Ù. ÀÌ ÆÄÀÏÀÇ ¸ñÀûÀº ÀϺΠ¼Ò½º ÄÚµå ÀúÀå¼Ò¸¦ ÅëÇØ ´Ù¸¥ »ç¿ëÀÚ¿Í Java ºôµå °æ·Î ¼³Á¤À» °øÀ¯ÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ƯÈ÷ ÀÌ ÆÄÀÏÀº Á÷Á¢ ÆíÁýÇÏÁö ¸¶½Ê½Ã¿À. ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù.
Ŭ·¡½º °æ·Î Ç׸ñÀº JavaCore¿¡ Á¤ÀÇµÈ ÆÑÅ丮 ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. Ŭ·¡½º °æ·Î Ç׸ñÀº ´ÙÀ½À» ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½Àº ÇÁ·ÎÁ§Æ® 'MyProject'ÀÇ ¼Ò½º Æú´õ 'src'¸¦ ¼±¾ðÇϴ Ŭ·¡½º °æ·Î ¿¹Á¦ÀÔ´Ï´Ù.
IClassPathEntry srcEntry = JavaCore.newSourceEntry(new Path("/MyProject/src");
´ÙÀ½Àº 'MyProject'ÀÇ Å¬·¡½º ÆÄÀÏ Æú´õ 'lib'¸¦ ¼±¾ðÇϴ Ŭ·¡½º °æ·Î ¿¹Á¦ÀÔ´Ï´Ù.
IClassPathEntry libEntry = JavaCore.newLibraryEntry(
new Path("/MyProject/lib"),
null, //no source
null, //no source
false); //not exported
´ÙÀ½ Ŭ·¡½º °æ·Î Ç׸ñÀº ¼Ò½º ÷ºÎ¸¦ °¡Áý´Ï´Ù.
IClassPathEntry libEntry = JavaCore.newLibraryEntry(
new Path("d:/lib/foo.jar"), // library location
new Path("d:/lib/foo_src.zip"), //source archive location
new Path("src"), //source archive root path
true); //exported
¼Ò½º ¾ÆÄ«ÀÌºê ·çÆ® °æ·Î´Â ¼Ò½º ¾ÆÄ«ÀÌºê ³»ÀÇ ·çÆ® À§Ä¡¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ³Î·Î ¼³Á¤µÈ °æ¿ì ¾ÆÄ«À̺êÀÇ ·çÆ®´Â µ¿ÀûÀ¸·Î Ã߷е˴ϴÙ.
´ÙÀ½ÀÇ Å¬·¡½º °æ·Î ÀÔ·ÂÀº Çʼö ÇÁ·ÎÁ§Æ® 'MyFramework'¸¦ ¼±¾ðÇÕ´Ï´Ù.
IClassPathEntry prjEntry = JavaCore.newProjectEntry(new Path("/MyFramework"), true); //exported
ÀÛ¾÷°ø°£ÀÌ ½ÃÀÛµÉ ¶§ È®ÀåÁ¡ org.eclipse.jdt.core.classpathVariableInitializer À» ÅëÇØ È£ÃâµÇ´Â ÀÚµ¿ Ŭ·¡½º °æ·Î º¯¼ö ÃʱâÈ ÇÁ·Î±×·¥À» µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ÀÇ Å¬·¡½º °æ·Î ÀÔ·ÂÀº º¯¼ö 'HOME'¿¡¼ °®°í ÀÖ´Â ¶óÀ̺귯¸® Àüü À§Ä¡ÀÔ´Ï´Ù.
¼Ò½º ÷ºÎ´Â º¯¼ö 'SRC_HOME' ¹× 'SRC_ROOT'¸¦ »ç¿ëÇÏ¿© Á¤Àǵ˴ϴÙ.
IClassPathEntry varEntry = JavaCore.newVariableEntry(
new Path("HOME/foo.jar"), // library location
new Path("SRC_HOME/foo_src.zip"), //source archive location
new Path("SRC_ROOT"), //source archive root path
true); //exported
JavaCore.setClasspathVariable("HOME", new Path("d:/myInstall"), null); // no progress
ÄÁÅ×À̳ʸ¦ ¹ÙÀεåÇØ¾ß ÇÒ ¶§ È®ÀåÁ¡ org.eclipse.jdt.core.classpathContainerInitializer¸¦ ÅëÇØ ´À¸®°Ô È£ÃâµÇ´Â ÀÚµ¿ Ŭ·¡½º °æ·Î ÄÁÅ×ÀÌ³Ê Ãʱ⠼³Á¤ÀÚÀ» µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ÀÇ Å¬·¡½º °æ·Î ÀÔ·ÂÀº ½Ã½ºÅÛ Å¬·¡½º ¶óÀ̺귯¸® ÄÁÅ×À̳ʸ¦ ¼±¾ðÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
IClassPathEntry varEntry = JavaCore.newContainerEntry(
new Path("JDKLIB/default"), // container 'JDKLIB' + hint 'default'
false); //not exported
JavaCore.setClasspathContainer(
new Path("JDKLIB/default"),
new IJavaProject[]{ myProject }, // value for 'myProject'
new IClasspathContainer[] {
new IClasspathContainer() {
public IClasspathEntry[] getClasspathEntries() {
return new IClasspathEntry[]{
JavaCore.newLibraryEntry(new Path("d:/rt.jar"), null, null, false);
};
}
public String getDescription() { return "Basic JDK library container"; }
public int getKind() { return IClasspathContainer.K_SYSTEM; }
public IPath getPath() { return new Path("JDKLIB/basic"); }
}
},
null);
Ŭ·¡½º °æ·Î ¼Ò½º Ç׸ñ¿¡´Â Ŭ·¡½º °æ·Î¿¡¼ ¼Ò½º Æú´õÀÇ Æ¯Á¤ ÀÚ¿øÀÌ Ç¥½ÃµÇÁö ¾Êµµ·Ï Á¦¿Ü ÆÐÅÏÀÌ ÁöÁ¤µÉ ¼öµµ ÀÖ½À´Ï´Ù. ÆÐÅÏÀ» »ç¿ëÇϸé ÀÚ¿ø Æ®¸®ÀÇ ÁöÁ¤µÈ ºÎºÐÀÌ ÇÊÅ͵ǵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢ Á¦¿Ü ÆÐÅÏ °æ·Î´Â Ŭ·¡½º °æ·Î Ç׸ñ¿¡ »ó´ëÀûÀ̸ç Ant¿Í À¯»çÇÑ ÆÐÅÏ ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÕ´Ï´Ù. ¿ÜºÎ ÆÐÅÏÀÌ ³»ºÎ ÆÐÅÏÀ» Á¦¿ÜÇÒ °æ¿ì ÁßøµÈ ¼Ò½º Æú´õ¸¦ ÁöÁ¤ÇÏ´Â µ¥ Á¦¿Ü ÆÐÅÏÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¦¿Ü ÆÐÅÏ¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº getExclusionPatterns()¸¦ ÂüÁ¶ÇϽʽÿÀ.
Java ÇÁ·ÎÁ§Æ® API isOnClasspath ´Â ƯÁ¤ ÀÚ¿øÀÌ Å¬·¡½º °æ·Î¿¡ ÀÖ´ÂÁö ÆÇº°Çϱâ Àü¿¡ Á¦¿Ü ÆÐÅÏÀ» È®ÀÎÇÕ´Ï´Ù.