Java ÄÚµå ÄÄÆÄÀÏ

JDT Ç÷¯±×Àο¡´Â ¼Ò½º Äڵ忡¼­ Java .class ÆÄÀÏÀ» ºôµåÇÏ´Â ÁõºÐ ¹× Àϰýó¸® Java ÄÄÆÄÀÏ·¯°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. API´Â ÄÄÆÄÀÏ·¯°¡ Á÷Á¢ Á¦°øÇÏÁö ¾ÊÀ¸¸ç, Java ÇÁ·ÎÁ§Æ®¿¡ ºô´õ·Î ¼³Ä¡µË´Ï´Ù. ÄÄÆÄÀÏÀº Ç¥ÁØ Ç÷§Æû ºôµå ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÏ¿© Æ®¸®°ÅµË´Ï´Ù.

Ç÷§Æû ºôµå ¸ÞÄ¿´ÏÁòÀº ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¿¡¼­ ÀÚ¼¼È÷ ¼³¸íÇÕ´Ï´Ù.

ÄÚµå ÄÄÆÄÀÏ

ºôµå API¸¦ »ç¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®ÀÇ Java ¼Ò½º ÆÄÀÏÀ» ÇÁ·Î±×·¥¿¡ µû¶ó ÄÄÆÄÀÏÇÒ ¼ö ÀÖ½À´Ï´Ù.

   IProject myProject;
IProgressMonitor myProgressMonitor;
myProject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, myProgressMonitor);

Java ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÀÌ Äڵ尡 Java ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¸¦ ÇÁ·ÎÁ§Æ®ÀÇ ºôµå ½ºÆå¿¡ Ãß°¡µÈ ´Ù¸¥ ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¿Í ÇÔ²² È£ÃâÇÕ´Ï´Ù. »ý¼ºµÈ .class ÆÄÀÏÀº ÁöÁ¤µÈ Ãâ·Â Æú´õ¿¡ ±â·ÏµË´Ï´Ù. Ãß°¡ ÀÚ¿ø ÆÄÀÏÀº Ãâ·Â Æú´õ¿¡µµ º¹»çµË´Ï´Ù. 

Àüü Àϰýó¸® ºôµåÀÇ °æ¿ì Ãâ·Â Æú´õ¿¡ ÀÖ´Â ¸ðµç .class ÆÄÀÏÀº ¹«È¿ ÆÄÀÏÀÌ ¾øµµ·Ï 'Á¤¸®'µÉ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº JDT ÄÚ¾î ºô´õ ¿É¼Ç (CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER)À» »ç¿ëÇÏ¿© Á¦¾îµË´Ï´Ù.  ÀÌ ¿É¼ÇÀÇ ±âº»°ªÀº Ãâ·Â Æú´õ¸¦ Á¤¸®ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀ» Àç¼³Á¤ÇÏ´Â °æ¿ì¸¦ Á¦¿ÜÇϰí ÇØ´ç ¼Ò½º ÆÄÀÏÀÌ ¾ø´Â ¸ðµç .class ÆÄÀÏÀ» Ãâ·Â Æú´õ ´ë½Å Ŭ·¡½º °æ·Î¿¡ ÀÖ´Â º°µµÀÇ Å¬·¡½º ÆÄÀÏ Æú´õ¿¡ ³õ¾Æ¾ß ÇÕ´Ï´Ù.

ÁõºÐ ºô´õ ¹× Àϰýó¸® ºô´õ´Â Ãâ·Â Æú´õ¿¡ º¹»çÇÏ´Â ÀÚ¿øÀ» Á¦¾îÇÏ´Â ´Ù¸¥ ¿É¼ÇÀ» »ç¿ëÇÏ¿© ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ »ùÇÃÀº '.ignore'·Î ³¡³ª´Â ÆÄÀϰú À̸§ÀÌ 'META-INF'ÀÎ Æú´õ°¡ Ãâ·Â Æú´õ¿¡ º¹»çµÇÁö ¾Êµµ·Ï ÇÏ´Â ÀÚ¿ø ÇÊÅ͸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

      Hashtable options = JavaCore.getOptions();
   options.put(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, "*.ignore,META-INF/");
   JavaCore.setOptions(options);

ÆÄÀÏ À̸§Àº Á¦°øµÈ ÆÐÅÏ Áß Çϳª¿Í ÀÏÄ¡ÇÒ °æ¿ì ÇÊÅÍ ¾Æ¿ôµË´Ï´Ù. Àüü Æú´õ´Â Æú´õÀÇ À̸§ÀÌ °æ·Î ºÐ¸®ÀÚ·Î ³¡³ª´Â Á¦°øµÈ Æú´õ À̸§ Áß Çϳª¿Í ÀÏÄ¡ÇÏ´Â °æ¿ì ÇÊÅÍ ¾Æ¿ôµË´Ï´Ù.

.classpath ÆÄÀÏ¿¡ ¿À·ù°¡ ÀÖÀ» ¶§ ´ÜÀÏ ¿À·ù¸¸ »ý¼ºÇϵµ·Ï ÁõºÐ ¹× Àϰýó¸® ºô´õ¸¦ ±¸¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¿É¼ÇÀº ±âº»ÀûÀ¸·Î ¼³Á¤µÇ¸ç ¸¹Àº ¿À·ù¸¦ Á¦°ÅÇÕ´Ï´Ù. ºô´õ °ü·Ã ¿É¼Ç ¹× ±âº»°ªÀÇ Àüü ¸ñ·ÏÀº JDT ÄÚ¾î ºô´õ ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

ÄÄÆÄÀÏ·¯´Â JavaCore ¿É¼ÇÀ» »ç¿ëÇÏ¿© ±¸¼ºµÉ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÄÄÆÄÀÏ Áß ¹ß»ýÇÏ´Â ¿©·¯ Á¾·ùÀÇ ¹®Á¦Á¡¿¡ »ç¿ëÇØ¾ß ÇÏ´Â ½É°¢µµ¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÄÆÄÀÏ·¯ °ü·Ã ¿É¼Ç ¹× ±âº»°ª Àüü ¸ñ·ÏÀº JDT ÄÚ¾î ÄÄÆÄÀÏ·¯ ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

ºô´õ ¶Ç´Â ÄÄÆÄÀÏ·¯ÀÇ ¿É¼ÇÀ» ÇÁ·Î±×·¥¿¡ µû¶ó ±¸¼ºÇÒ °æ¿ì, ¿É¼Ç ¹üÀ§¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÀÚ¿ø ÇÊÅ͸¦ ¼³Á¤ÇÏ¸é Æ¯Á¤ ÇÁ·ÎÁ§Æ®¿¡¸¸ Àû¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

   
   Hashtable options = myProject.getOptions(false);  // get only the options set up in this project
   options.put(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, "*.ignore,META-INF/");
   myProject.setOptions(options);

Àϰýó¸® ÄÄÆÄÀÏ·¯ »ç¿ë

Àϰýó¸® ÄÄÆÄÀÏ·¯ ã±â

Àϰýó¸® ÄÄÆÄÀÏ·¯ Ŭ·¡½º´Â JDT ÄÚ¾î Ç÷¯±×ÀÎÀÇ ³»ºÎ Ŭ·¡½º¿¡ ÀÖ½À´Ï´Ù. Ŭ·¡½º À̸§Àº org.eclipse.jdt.internal.compiler.batch.MainÀÔ´Ï´Ù. plugins/org.eclipse.jdt.core_3.2.0.jar·Î ÆÐŰÁöµË´Ï´Ù. 3.2ºÎÅÍ º°µµ ´Ù¿î·Îµå·Î »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÆÄÀÏ À̸§Àº ecj.jarÀÔ´Ï´Ù. ´ëÀÀÇÏ´Â ¼Ò½ºµµ »ç¿ë °¡´ÉÇÕ´Ï´Ù. À̸¦ °¡Á®¿À·Á¸é ´Ù¿î·Îµå ÆäÀÌÁö·Î À̵¿ÇÏ¿© JDT ÄÚ¾î Àϰýó¸® ÄÄÆÄÀÏ·¯ ¼½¼ÇÀ» °Ë»öÇϽʽÿÀ. ÀÌ jar¿¡´Â Àϰýó¸® ÄÄÆÄÀÏ·¯¿Í javac ant ¾î´ðÅͰ¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

µû¶ó¼­ Eclipse ¿ÜºÎÀÇ Ant ºôµå ³»¿¡¼­ µ¶¸³Çü ÀÀ¿ëÇÁ·Î±×·¥À¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Àϰýó¸® ÄÄÆÄÀÏ·¯ ½ÇÇà

»ç¿ë °¡´ÉÇÑ ¿É¼Ç

¿À·»Áö»ö ¹è°æÀ¸·Î Ç¥½ÃµÈ ¿É¼ÇÀÌ Á¦¾ÈµÈ ¿É¼ÇÀÔ´Ï´Ù.

À̸§ »ç¿ë¹ý
Ŭ·¡½º °æ·Î ¿É¼Ç
-bootclasspath <dir 1>;<dir 2>;...;<dir P> ÄÄÆÄÀÏ·¯¿¡¼­ »ç¿ëµÇ´Â Ŭ·¡½º ÆÄÀÏÀ» ºÎÆ®½ºÆ®·¦ÇÏ´Â µ¥ »ç¿ëµÇ´Â µð·ºÅ丮 ¶Ç´Â jar ÆÄÀÏ ¸ñ·ÏÀÔ´Ï´Ù. ±âº»ÀûÀ¸·Î, ½ÇÇà ÁßÀÎ VM ¶óÀ̺귯¸®°¡ »ç¿ëµË´Ï´Ù. Ç׸ñÀº Ç÷§Æû °æ·Î ºÐ¸®ÀÚ·Î ±¸ºÐµË´Ï´Ù.
°¢ µð·ºÅ丮 ¶Ç´Â ÆÄÀÏÀº '['¿Í ']' »çÀÌ¿¡ À¯Çü ¾×¼¼½º ±ÔÄ¢À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
-cp
-classpath <dir 1>;<dir 2>;...;<dir P>
¼Ò½º ÆÄÀÏÀ» ÄÄÆÄÀÏÇÏ´Â µ¥ »ç¿ëµÇ´Â µð·ºÅ丮 ¶Ç´Â jar ÆÄÀÏ ¸ñ·ÏÀÔ´Ï´Ù. ±âº»°ªÀº "java.class.path" Ư¼º °ªÀÔ´Ï´Ù. Ç׸ñÀº Ç÷§Æû °æ·Î ºÐ¸®ÀÚ·Î ±¸ºÐµË´Ï´Ù.
°¢ µð·ºÅ丮 ¶Ç´Â ÆÄÀÏÀº '['¿Í ']' »çÀÌ¿¡ À¯Çü ¾×¼¼½º ±ÔÄ¢À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, [-X]´Â À¯Çü X¿¡ ´ëÇÑ ¾×¼¼½º¸¦ ±ÝÁöÇϰí [~X]´Â À¯Çü X¿¡ ´ëÇÑ ¾×¼¼½º¸¦ ¹æÇØÇϸç [+p/X:-p/*]´Â p ÆÐŰÁö ³» ¸ðµç À¯Çü¿¡ ´ëÇÑ ¾×¼¼½º´Â ±ÝÁöÇϰí p/X¿¡ ´ëÇÑ ¾×¼¼½º´Â Çã¿ëÇÕ´Ï´Ù.
-extdirs <dir 1>;<dir 2>;...;<dir P> È®Àå zip/jar ÆÄÀÏÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â µð·ºÅ丮 ¸ñ·ÏÀÔ´Ï´Ù. Ç׸ñÀº Ç÷§Æû °æ·Î ºÐ¸®ÀÚ·Î ±¸ºÐµË´Ï´Ù.
-endorseddirs <dir 1>;<dir 2>;...;<dir P> ±ÔÁ¤È­µÈ zip/jar ÆÄÀÏ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â µð·ºÅ丮 ¸ñ·ÏÀÔ´Ï´Ù. Ç׸ñÀº Ç÷§Æû °æ·Î ºÐ¸®ÀÚ·Î ±¸ºÐµË´Ï´Ù.
-sourcepath <dir 1>;<dir 2>;...;<dir P> ¼Ò½º ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â µð·ºÅ丮 ¸ñ·ÏÀÔ´Ï´Ù. Ç׸ñÀº Ç÷§Æû °æ·Î ºÐ¸®ÀÚ·Î ±¸ºÐµË´Ï´Ù.
°¢ µð·ºÅ丮´Â '['¿Í ']' »çÀÌ¿¡ À¯Çü ¾×¼¼½º ±ÔÄ¢À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
-d <dir 1>|none »ý¼ºµÈ .class ÆÄÀÏÀ» ´ýÇÁÇØ¾ß ÇÏ´Â µð·ºÅ丮¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÌ ¿É¼ÇÀ» »ý·«ÇÏ¸é ÆÐŰÁö µð·ºÅ丮 ±¸Á¶°¡ ÀÛ¼ºµÇÁö ¾Ê½À´Ï´Ù.
.class ÆÄÀÏÀ» »ý¼ºÇÏÁö ¾ÊÀ¸·Á¸é -d noneÀ» »ç¿ëÇϽʽÿÀ.
-encoding <encoding name> ±âº» ¼Ò½º ÀÎÄÚµù Çü½ÄÀ» ÁöÁ¤ÇϽʽÿÀ(°¢ ÀÔ·Â ¼Ò½º ÆÄÀÏ/Æú´õ À̸§¿¡ [[<encoding name>] Á¢¹ÌºÎ¸¦ Ãß°¡ÇÏ¿© ÆÄÀϺ°·Î »ç¿ëÀÚ Á¤ÀÇ ÀÎÄÚµùÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖÀ½. ¿¹:X.java[utf8]).
Áؼö ¿É¼Ç
-target 1.1|1.2|1.3|1.4|1.5|5|5.0|1.6|6|6.0 .class ÆÄÀÏ ´ë»ó ¼³Á¤À» ÁöÁ¤ÇÕ´Ï´Ù. °¡´ÉÇÑ °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
  • 1.1(ÁÖ ¹öÀü: 45 ºÎ ¹öÀü: 3)
  • 1.2(ÁÖ ¹öÀü: 46 ºÎ ¹öÀü: 0)
  • 1.3(ÁÖ ¹öÀü: 47 ºÎ ¹öÀü: 0)
  • 1.4(ÁÖ ¹öÀü: 48 ºÎ ¹öÀü: 0)
  • 1.5, 5 ¶Ç´Â 5.0(ÁÖ ¹öÀü: 49 ºÎ ¹öÀü: 0)
  • 1.6, 6 ¶Ç´Â 6.0(ÁÖ ¹öÀü: 50 ºÎ ¹öÀü: 0)
±âº»°ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
  • 1.1(-1.3 ¸ðµå¿¡¼­)
  • 1.2(-1.4 ¸ðµå¿¡¼­)
  • 1.5(-1.5 ¸ðµå¿¡¼­)
  • 1.6(-1.6 ¸ðµå¿¡¼­)
-1.3 Áؼö ·¹º§À» 1.3À¸·Î ¼³Á¤ÇÕ´Ï´Ù. ¾Ï½ÃÀû -source 1.3 -target 1.1.
-1.4 Áؼö ·¹º§À» 1.4(±âº»°ª)·Î ¼³Á¤ÇÕ´Ï´Ù. ¾Ï½ÃÀû -source 1.3 -target 1.2.
-1.5 Áؼö ·¹º§À» 1.5·Î ¼³Á¤ÇÕ´Ï´Ù. ¾Ï½ÃÀû -source 1.5 -target 1.5.
-1.6 Áؼö ·¹º§À» 1.6À¸·Î ¼³Á¤ÇÕ´Ï´Ù. ¾Ï½ÃÀû -source 1.6 -target 1.6.
-source 1.3|1.4|1.5|5|5.0|1.6|6|6.0 ÀÌ´Â ÄÄÆÄÀÏ·¯°¡ ¿¹»óÇÏ´Â ¼Ò½º ·¹º§À» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.
°¡´ÉÇÑ °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
  • 1.3
  • 1.4
  • 1.5, 5 ¶Ç´Â 5.0
  • 1.6, 6 ¶Ç´Â 6.0
±âº»°ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
  • 1.3(-1.3 ¸ðµå¿¡¼­)
  • 1.3(-1.4 ¸ðµå¿¡¼­)
  • 1.5(-1.5 ¸ðµå¿¡¼­)
  • 1.6(-1.6 ¸ðµå¿¡¼­)
1.4¿¡¼­´Â assert°¡ Ű¿öµå·Î °£Áֵ˴ϴÙ. 1.5 ¹× 1.6¿¡¼­´Â enum ¹× assert°¡ Ű¿öµå·Î °£Áֵ˴ϴÙ.
°æ°í ¿É¼Ç
-warn:
allDeprecation
allJavadoc
assertIdentifier
boxing
charConcat
conditionAssign
constructorName
dep-ann
deprecation
discouraged
emptyBlock
enumSwitch
fallthrough
fieldHiding
finalBound
finally
forbidden
hiding
incomplete-switch
indirectStatic
intfAnnotation
intfNonInherited
javadoc
localHiding
maskedCatchBlocks
nls
noEffectAssign
null
over-ann
paramAssign
pkgDefaultMethod
raw
semicolon
serial
specialParamHiding
static-access
staticReceiver
suppress
synthetic-access
syntheticAccess
tasks(<task1>|...|<taskN>)
typeHiding
unchecked
unnecessaryElse
unqualified-field-access
unqualifiedField
unused
unusedArgument
unusedImport
unusedLabel
unusedLocal
unusedPrivate
unusedThrown
uselessTypeCheck
varargsCast
warningToken
°æ°í ·¹º§À» ¼³Á¤ÇϽʽÿÀ.
¿¹Á¦: -warn:unusedLocal,deprecation

»¡°£»öÀ¸·Î Ç¥½ÃµÈ °ÍÀº ±âº» ¼³Á¤ÀÔ´Ï´Ù.

    -warn:none                               disable all warnings
    -warn:<warnings separated by ,>    enable exactly the listed warnings
    -warn:+<warnings separated by ,>   enable additional warnings
    -warn:-<warnings separated by ,>   disable specific warnings
allDeprecation Áö¿øµÇÁö ¾Ê´Â ÄÚµå ³»¿¡¼­ÀÇ Æó±â
allJavadoc javadoc°¡ ¿Ã¹Ù¸£Áö ¾Ê°Å³ª ´©¶ôµÊ
assertIdentifier assert°¡ ID·Î »ç¿ëµÊ
boxing ¿ÀÅä¹Ú½Ì(autoboxing) º¯È¯
charConcat ¹®ÀÚ ¹è¿­ÀÌ ¸í½ÃÀûÀ¸·Î ¹®ÀÚ¿­·Î º¯È¯µÇÁö ¾Ê°í ¹®ÀÚ¿­ ¿¬°á¿¡¼­ »ç¿ëµÇ´Â °æ¿ì
conditionAssign ºÎ¿ï ÁöÁ¤ °¡´É¼º
constructorName »ý¼ºÀÚ À̸§À» °¡Áø ¸Þ¼Òµå
dep-ann @Deprecated ¾î³ëÅ×ÀÌ¼Ç ´©¶ô
deprecation Áö¿øµÇÁö ¾Ê´Â ÄÚµå ¹ÛÀÇ Æó±âµÈ À¯Çü ¶Ç´Â ±¸¼º¿ø »ç¿ë
discouraged ¹æÇØ ¾×¼¼½º ±ÔÄ¢°ú ÀÏÄ¡ÇÏ´Â À¯Çü »ç¿ë
emptyBlock ¹®¼­È­µÇÁö ¾ÊÀº ºó ºí·Ï
enumSwitch,
incomplete-switch
ºÒ¿ÏÀüÇÑ ¿­°Å ½ºÀ§Ä¡
fallthrough °¡´ÉÇÑ fall-through ÄÉÀ̽º
fieldHiding ´Ù¸¥ º¯¼ö¸¦ ¼û±â´Â Çʵå
finalBound ÃÖÁ¾ ¹ÙÀεåµÈ À¯Çü ¸Å°³º¯¼ö
finally finally ºí·ÏÀÌ Á¤»óÀûÀ¸·Î ¿Ï·áµÇÁö ¾ÊÀ½
forbidden ±ÝÁö ¾×¼¼½º ±ÔÄ¢°ú ÀÏÄ¡ÇÏ´Â À¯Çü »ç¿ë
hiding fieldHiding, localHiding, typeHiding ¹× maskedCatchBlock¿¡ ´ëÇÑ ¸ÅÅ©·Î
indirectStatic Static ±¸¼º¿ø¿¡ ´ëÇÑ °£Á¢ ÂüÁ¶
intfAnnotation ¾î³ëÅ×ÀÌ¼Ç À¯ÇüÀÌ »óÀ§ ÀÎÅÍÆäÀ̽º·Î »ç¿ëµÊ
intfNonInherited ÀÎÅÍÆäÀ̽º ºñ»ó¼Ó ¸Þ¼Òµå ȣȯ¼º
javadoc ¿Ã¹Ù¸£Áö ¾ÊÀº javadoc
localHiding ·ÎÄà º¯¼ö°¡ ´Ù¸¥ º¯¼ö¸¦ ¼û±è
maskedCatchBlocks ¼û°ÜÁø catch ºí·Ï
nls ºñnls ¹®ÀÚ¿­ ¸®ÅÍ·²(//$NON-NLS-<n> ÅÂ±× ¾øÀ½)
noEffectAssign ¿µÇâÀ» ÁÖÁö ¾Ê´Â ÁöÁ¤
null ´©¶ôµÈ ¶Ç´Â Áߺ¹ ³Î °Ë»ç
over-ann @Override ¾î³ëÅ×ÀÌ¼Ç ´©¶ô
paramAssign ¸Å°³º¯¼ö ÁöÁ¤
pkgDefaultMethod ÆÐŰÁö ±âº» ¸Þ¼Òµå ´ëü ½Ãµµ
raw ¸Å°³º¯¼öÈ­µÈ À¯Çü ´ë½Å ¿ø½Ã À¯Çü »ç¿ë
semicolon ºÒÇÊ¿äÇÑ ¼¼¹ÌÄÝ·Ð ¶Ç´Â ºó ¸í·É¹®
serial serialVersionUID ´©¶ô
specialParamHiding »ý¼ºÀÚ ¶Ç´Â setter ¸Å°³º¯¼ö°¡ ´Ù¸¥ Çʵ带 ¼û±è
static-access indirectStatic ¹× staticReceiver¿¡ ´ëÇÑ ¸ÅÅ©·Î
staticReceiver static Çʵ带 °¡Á®¿À°Å³ª Á¤Àû ¸Þ¼Òµå¸¦ È£ÃâÇϴµ¥ ºñÁ¤Àû ¼ö½Å±â°¡ »ç¿ëµÇ´Â °æ¿ì
suppress @SuppressWarnings »ç¿ë
syntheticAccess,
synthetic-access
³»ºÎ Ŭ·¡½º¿¡ ´ëÇÑ Á¾ÇÕÀû ¾×¼¼½º ¼öÇà ½Ã
tasks ¼Ò½º Äڵ忡¼­ tasks ű׿¡ ´ëÇÑ Áö¿ø »ç¿ë
typeHiding ´Ù¸¥ À¯ÇüÀ» ¼û±â´Â À¯Çü ¸Å°³º¯¼ö
unchecked ¼±ÅõÇÁö ¾ÊÀº À¯Çü Á¶ÀÛ
unnecessaryElse ºÒÇÊ¿äÇÑ else Àý
unqualified-field-access,
unqualifiedField
Çʵ忡 ´ëÇÑ ±ÔÁ¤µÇÁö ¾ÊÀº ÂüÁ¶
unused unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate ¹× unusedThrown¿¡ ´ëÇÑ ¸ÅÅ©·Î
unusedArgument »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¼Òµå Àμö
unusedImport »ç¿ëÇÏÁö ¾Ê´Â °¡Á®¿À±â ÂüÁ¶
unusedLabel »ç¿ëÇÏÁö ¾Ê´Â ·¹À̺í
unusedLocal »ç¿ëÇÏÁö ¾Ê´Â ·ÎÄà º¯¼ö
unusedPrivate »ç¿ëÇÏÁö ¾Ê´Â private ±¸¼º¿ø ¼±¾ð
unusedThrown »ç¿ëÇÏÁö ¾Ê´Â ¹ß»ý ¿¹¿Ü ¼±¾ð
uselessTypeCheck ºÒÇÊ¿äÇÑ cast/instanceof ¿ÀÆÛ·¹À̼Ç
varargsCast varargs Àμö°¡ ÇÊ¿ä·Î ÇÏ´Â ¸í½ÃÀû ij½ºÆ®
warningToken @SuppressWarnings¿¡¼­ 󸮵ÇÁö ¾ÊÀº °æ°í ÅäÅ«

-nowarn °æ°í ¾øÀ½(-warn:none°ú µ¿ÀÏ)
-deprecation -warn:deprecation°ú µ¿ÀÏ.
µð¹ö±× ¿É¼Ç
-g[:none|:lines,vars,source] µð¹ö±× ¼Ó¼º ·¹º§À» ¼³Á¤ÇϽʽÿÀ.
-g ¸ðµç µð¹ö±× Á¤º¸(-g:lines,vars,source¿Í µ¿ÀÏ)
-g:none µð¹ö±× Á¤º¸ ¾øÀ½
-g:[lines,vars,source] ¼±ÅÃÀû µð¹ö±× Á¤º¸
-preserveAllLocals µð¹ö±× ¸ñÀûÀ¸·Î ¸ðµç ·ÎÄà º¯¼ö¸¦ º¸Á¸Çϵµ·Ï ÄÄÆÄÀÏ·¯¿¡ ¸í½ÃÀûÀ¸·Î ¿äûÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀ» »ý·«Çϸé ÄÄÆÄÀÏ·¯°¡ »ç¿ëÇÏÁö ¾Ê´Â ·ÎÄÃÀ» Á¦°ÅÇÕ´Ï´Ù.
javac ¿É¼Ç°úÀÇ È£È¯¼ºÀ» À§ÇØ ¹«½ÃµÇ´Â ¿É¼Ç
-J<option> °¡»ó ½Ã½ºÅÛ¿¡ ¿É¼Ç Àü´Þ
-X<option> ºñÇ¥ÁØ ¿É¼Ç ÁöÁ¤. -Xemacs´Â ¹«½ÃµË´Ï´Ù.
-X ºñÇ¥ÁØ ¿É¼Ç ÀÎ¼â ¹× Á¾·á
-O ½ÇÇà ½Ã°£ ÃÖÀûÈ­
°í±Þ ¿É¼Ç
@<file> ÆÄÀÏ¿¡¼­ ¸í·ÉÇà Àμö¸¦ ÀнÀ´Ï´Ù.
-maxProblems <n> ÄÄÆÄÀÏ ´ÜÀ§´ç ÃÖ´ë ¹®Á¦Á¡ ¼ö(±âº»ÀûÀ¸·Î 100°³)
-log <filename> ÄÄÆÄÀÏ·¯ÀÇ ¸ðµç Ãâ·ÂÀ» ´ýÇÁÇÒ ·Î±× ÆÄÀÏÀ» ÁöÁ¤ÇϽʽÿÀ. ÀÌ ¿É¼ÇÀº Àϰýó¸® ÄÄÆÄÀÏ·¯¸¦ µð¹ö±×Çϰųª ¿À·ù¿Í °æ°í¸¦ ¸ðµÎ Æ÷ÇÔÇÏ´Â ÆÄÀÏÀ» Àϰýó¸® ºôµå¿¡¼­ °¡Á®¿À·Á´Â °æ¿ì ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù. È®ÀåÀÚ°¡ .xmlÀÎ °æ¿ì, »ý¼ºµÇ´Â ·Î±×´Â xml ÆÄÀÏÀÔ´Ï´Ù.
-Xemacs ÄÜ¼Ö ¹× ÀÏ¹Ý ÅØ½ºÆ® ·Î±×¿¡ ¿À·ù ¹× °æ°í À§Ä¡¸¦ Á¦°øÇÏ·Á¸é emacs ½ºÅ¸ÀÏÀ» »ç¿ëÇϽʽÿÀ. ÀÌ ¿É¼ÇÀº XML ·Î±×¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ÀÌ ¿É¼ÇÀÌ È°¼ºÈ­µÈ °æ¿ì,
2. WARNING in /workspace/X.java
(at line 8)...
¸Þ½ÃÁö°¡
´ÙÀ½°ú °°ÀÌ Á¦°øµË´Ï´Ù.
/workspace/X.java:8: warning: The method...
-proceedOnError ¿À·ù¿¡µµ ºÒ±¸Çϰí ÄÄÆÄÀÏÀ» °è¼ÓÇÏ°í ¹®Á¦Á¡ ¸Þ¼Òµå ¶Ç´Â ¹®Á¦Á¡ À¯ÇüÀ» »ç¿ëÇÏ¿© Ŭ·¡½º ÆÄÀÏ ´ýÇÁ¸¦ °è¼ÓÇÕ´Ï´Ù. ³²¾Æ ÀÖ´Â ¿À·ù°¡ ÀÖ´Â °æ¿ì¿¡µµ ÀÀ¿ëÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á´Â °æ¿ì¿¡¸¸ ±ÇÀåÇÕ´Ï´Ù.
-verbose ÀÌ ¿É¼ÇÀ» ÁöÁ¤ÇÏ¸é ¾×¼¼½ºµÈ/ó¸®µÈ ÄÄÆÄÀÏ ´ÜÀ§¸¦ ÄÜ¼Ö ¶Ç´Â ·Î±× ÆÄÀÏ¿¡ ÀμâÇÕ´Ï´Ù.
-referenceInfo ¿¬»ê ÂüÁ¶ Á¤º¸. ºô´õ¿¡ ¿¬°áµÈ °æ¿ì¿¡¸¸ À¯¿ëÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì ÂüÁ¶ Á¤º¸´Â ¾µ¸ð°¡ ¾ø½À´Ï´Ù.
-progress ÁøÇà Ç¥½Ã(-log ¸ðµå¿¡¼­¸¸).
-time ¼Óµµ Á¤º¸ Ç¥½Ã.
-noExit ÄÄÆÄÀÏ Á¾·á ½Ã System.exit(n)À» È£ÃâÇÏÁö ¾ÊÀ½(¿À·ù°¡ ¾ø´Â °æ¿ì n=0).
-repeat <n> ÄÄÆÄÀÏ ÇÁ·Î¼¼½º¸¦ <n>¹ø ¹Ýº¹(¼º´É ºÐ¼®).
-inlineJSR ÀζóÀÎ JSR ¹ÙÀÌÆ® ÄÚµå(´ë»ó >= 1.5ÀÎ °æ¿ì ¾Ï½ÃÀû).
-enableJavadoc javadoc ³» ÂüÁ¶ °í·Á.
µµ¿ò¸» ¿É¼Ç
-? -help µµ¿ò¸» ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.
-v -version ÄÄÆÄÀÏ·¯ÀÇ ºôµå ¹øÈ£¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¹ö±×¸¦ º¸°íÇÏ´Â °æ¿ì¿¡ ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù.
-showversion ÄÄÆÄÀÏ·¯ÀÇ ºôµå ¹øÈ£¸¦ Ç¥½ÃÇÏ°í °è¼ÓÇÕ´Ï´Ù. ¹ö±×¸¦ º¸°íÇÏ´Â °æ¿ì¿¡ ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù.

¿¹Á¦

d:\temp -classpath rt.jar -time -g -d d:/tmp d:\temp ¹× ¼­ºêÆú´õÀÇ ¸ðµç ¼Ò½º ÆÄÀÏÀ» ÄÄÆÄÀÏÇÕ´Ï´Ù. Ŭ·¡½º °æ·Î´Â ´ÜÁö rt.jarÀÔ´Ï´Ù. ¸ðµç µð¹ö±× ¼Ó¼ºÀ» »ý¼ºÇÏ¸ç »ý¼ºµÈ ¸ðµç .class ÆÄÀÏÀº d:\tmp¿¡ ´ýÇÁµË´Ï´Ù. Àϰýó¸® ÇÁ·Î¼¼½º°¡ ¿Ï·áµÇ¸é ÄÄÆÄÀÏ·¯ÀÇ ¼Óµµ°¡ Ç¥½ÃµË´Ï´Ù.
d:\temp\Test.java -classpath d:\temp;rt.jar -g:none Test.java¸¸ ÄÄÆÄÀÏÇϰí Á¾¼Ó ÆÄÀÏÀÌ ÀÖ´Â °æ¿ì d:\temp¿¡¼­ Á¾¼Ó ÆÄÀÏÀ» °Ë»öÇÕ´Ï´Ù. Ŭ·¡½º °æ·Î´Â rt.jar°¡ ¼öÇàµÈ d:\tempÀÔ´Ï´Ù. ÀÌ´Â d:\temp¿¡¼­ ¸ÕÀú ¸ðµç Çʼö Ŭ·¡½º¸¦ °Ë»öÇÑ ÈÄ rt.jar¿¡¼­ °Ë»öÇÔÀ» ÀǹÌÇÕ´Ï´Ù. µð¹ö±× ¼Ó¼ºÀ» »ý¼ºÇÏÁö ¾ÊÀ¸¸ç, »ý¼ºµÈ ¸ðµç .class ÆÄÀÏÀº d:\temp¿¡ ´ýÇÁµË´Ï´Ù.

Ant javac ¾î´ðÅÍ »ç¿ë

Eclipse ÄÄÆÄÀÏ·¯¸¦ javac ¾î´ðÅ͸¦ »ç¿ëÇÏ´Â Ant ½ºÅ©¸³Æ® ³»ºÎ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Eclipse ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÏ·Á¸é ½ºÅ©¸³Æ®¿¡ build.compiler Ư¼ºÀ» Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½Àº °£´ÜÇÑ ¿¹Á¦ÀÔ´Ï´Ù.
<?xml version="1.0" encoding="UTF-8" ?>
<project name="compile" default="main" basedir="../.">

	<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>

	<property name="root" value="${basedir}/src"/>

	<property name="destdir" value="d:/temp/bin" />

	<target name="main">
		<javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4">
		    <classpath>
		      <pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/>
		    </classpath>
		</javac>		
	</target>
</project> 
javac Ant Ÿ½ºÅ©¿¡ »ç¿ëµÈ ±¸¹®Àº Ant javac Ÿ½ºÅ© ¹®¼­¿¡ ÀÖ½À´Ï´Ù. ÇöÀç ¾î´ðÅÍ´Â Javac Ant Ÿ½ºÅ© 1.4.1 - 1.6.5 ¹öÀüÀ» Áö¿øÇÕ´Ï´Ù.

»ç¿ë ÁßÀÎ ¹öÀüÀÌ 1.5.0 ÀÌ»óÀÎ °æ¿ì, ÁßøµÈ ÄÄÆÄÀÏ·¯ Àμö ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ÄÄÆÄÀÏ·¯ ƯÁ¤ ¿É¼ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

...
		<javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4">
		    <classpath>
		      <pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/>
		    </classpath>
    <compilerarg compiler="org.eclipse.jdt.core.JDTCompilerAdapter" line="-1.5 -warn:+boxing"/>
</javac>		
...

ÄÄÆÄÀÏ·¯ Á¾¼Ó ½ºÅ©¸³Æ®¸¦ °¡Á®¿ÀÁö ¾Êµµ·Ï ÇÏ·Á¸é ÄÄÆÄÀÏ·¯ Àμö¸¦ org.eclipse.jdt.core.JDTCompilerAdapter·Î ¼³Á¤ÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. À̸¦ ¼³Á¤ÇÏÁö ¾ÊÀº °æ¿ì, ½ºÅ©¸³Æ®´Â Eclipse ÄÄÆÄÀÏ·¯ÇÏ°í¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼³Á¤Àº ÇßÁö¸¸, À̸§ÀÌ build.compiler Ư¼ºÀ¸·Î ÁöÁ¤µÈ ÄÄÆÄÀÏ·¯ À̸§°ú ´Ù¸¥ °æ¿ì ÁßøµÈ ÄÄÆÄÀÏ·¯ Àμö´Â ¹«½ÃµË´Ï´Ù.

¹®Á¦Á¡ ÆÇº°

JDT ÄÚ¾î´Â Ư¼ö ¸¶Ä¿(¸¶Ä¿ À¯Çü "org.eclipse.jdt.core.problem")¸¦ Á¤ÀÇÇÏ¿© ÄÄÆÄÀÏ ¹®Á¦Á¡À» ¼±¾ðÇÕ´Ï´Ù. ÄÄÆÄÀÏ·¯°¡ ¹ß°ßÇÑ ¹®Á¦Á¡À» ÇÁ·Î±×·¥¿¡ µû¶ó ãÀ¸·Á¸é Ç¥ÁØ Ç÷§Æû ¸¶Ä¿ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¸¶Ä¿ »ç¿ë¿¡ ´ëÇÑ °³¿ä´Â ÀÚ¿ø ¸¶Ä¿¸¦ ÂüÁ¶ÇϽʽÿÀ.

´ÙÀ½ ½º´ÏÆêÀº ÄÄÆÄÀÏ ´ÜÀ§ÀÇ ¸ðµç Java ¹®Á¦Á¡ ¸¶Ä¿¸¦ ã½À´Ï´Ù.

   public IMarker[] findJavaProblemMarkers(ICompilationUnit cu) 
         throws CoreException {
      IResource javaSourceFile = cu.getUnderlyingResource();
      IMarker[] markers = 
         javaSourceFile.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER,
            true, IResource.DEPTH_INFINITE);
   }

Java ¹®Á¦Á¡ ¸¶Ä¿´Â Java ÇÁ·ÎÁ§Æ® ºô´õ°¡ À¯Áöº¸¼öÇϸç, ¹®Á¦Á¡ÀÌ ºÐ¼®µÇ°í Java ¼Ò½º°¡ ´Ù½Ã ÄÄÆÄÀ쵃 ¶§ ÀÚµ¿À¸·Î Á¦°ÅµË´Ï´Ù.

¹®Á¦Á¡ ID °ªÀº IProblem¿¡ Á¤ÀÇµÈ »ó¼ö Áß Çϳª·Î ¼³Á¤ÇÕ´Ï´Ù. ¹®Á¦Á¡ÀÇ ID´Â È®½ÇÇÏÁö¸¸ ¸Þ½ÃÁö´Â ¹ø¿ªµÇ¹Ç·Î ±âº» ·ÎÄÉÀÏ¿¡ µû¶ó º¯°æµÉ ¼ö ÀÖ½À´Ï´Ù. IProblem¿¡ Á¤ÀÇµÈ »ó¼ö´Â ÀÚü ¼³¸íÀûÀÔ´Ï´Ù.

Java Á¶ÀÛ Áß ¹ß°ßµÈ ¹®Á¦Á¡À» ¼öÁýÇÏ·Á¸é IProblemRequestorÀÇ ±¸ÇöÀ» Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ÀÛ¾÷ ÁßÀÎ »çº» »ý¼º¿¡ ´ëÇØ IProblemRequestor¸¦ Á¦°øÇÑ °æ¿ì ÀÛ¾÷ ÁßÀÎ »çº»Àº ¹®Á¦Á¡ ŽÁö¸¦ ¼ö¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀ» ¼öÇàÇϱâ À§ÇØ reconcile ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°½À´Ï´Ù.

  ICompilationUnit unit = ..; // get some compilation unit
			
  // create requestor for accumulating discovered problems
  IProblemRequestor problemRequestor = new IProblemRequestor() {
    public void acceptProblem(IProblem problem) {
      System.out.println(problem.getID() + ": " + problem.getMessage());
    }
    public void beginReporting() {}
    public void endReporting() {}
    public boolean isActive() {	return true; } // will detect problems if active
  };
    
  // use working copy to hold source with error
  ICompilationUnit workingCopy = unit.getWorkingCopy(new WorkingCopyOwner() {}, problemRequestor, null);
  ((IOpenable)workingCopy).getBuffer().setContents("public class X extends Zork {}");

  // trigger reconciliation			
  workingCopy.reconcile(NO_AST, true, null, null);
acceptProblem(IProblem) ¸Þ¼Òµå¿¡ º¸°íµÈ ¹®Á¦Á¡¿¡ ´ëÇÑ Á¶Ä¡¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­ º¸°íµÈ ¹®Á¦´Â Zork¸¦ ºÐ¼®ÇÒ ¼ö ¾ø°Å³ª Zork°¡ ¿Ã¹Ù¸¥ ¼öÆÛŬ·¡½º°¡ ¾Æ´Ï°í ZorkÀÇ ID°¡ IProblem.SuperclassNotFound¶ó´Â Á¡ÀÔ´Ï´Ù.

SuppressWarnings¸¦ »ç¿ëÇÏ¿© °æ°í Á¦¿Ü

Java 5.0Àº java.lang.SuppressWarning ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© ÄÄÆÄÀÏ ´ÜÀ§ÀÇ ¼­ºê¼¼Æ®¿Í °ü·ÃµÈ ÄÄÆÄÀÏ °æ°í¸¦ »ç¿ëÇÏÁö ¾Ê´Â ¿É¼ÇÀ» »ç¿ëÀÚ¿¡°Ô Á¦°øÇÕ´Ï´Ù.

	@SuppressWarning("unused") public void foo() {
		String s;
	}

¾î³ëÅ×À̼ÇÀÌ ¾øÀ¸¸é ÄÄÆÄÀÏ·¯¿¡¼­ ·ÎÄà º¯¼ö s¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© ÄÄÆÄÀÏ·¯´Â ÀÌ °æ°í¸¦ foo ¸Þ¼Òµå¿¡ ´ëÇØ ·ÎÄÿ¡¼­ ¹«½ÃÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì µ¿ÀÏÇÑ ÄÄÆÄÀÏ ´ÜÀ§ ¶Ç´Â µ¿ÀÏÇÑ ÇÁ·ÎÁ§Æ®ÀÇ ´Ù¸¥ À§Ä¡¿¡ °æ°í¸¦ º¸°üÇÒ ¼ö ÀÖ½À´Ï´Ù.

SuppressWarning ¾î³ëÅ×ÀÌ¼Ç ³»ºÎ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ÅäÅ«ÀÇ ¸ñ·ÏÀº ´ÙÀ½°ú °°½À´Ï´Ù.