Java ÄÚµå ÄÄÆÄÀÏ

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

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

ÄÚµå ÄÄÆÄÀÏ

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

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

Java ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÀÌ Äڵ尡 Java ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¸¦ ÇÁ·ÎÁ§Æ®ÀÇ ºôµå ½ºÆå¿¡ Ãß°¡µÈ ´Ù¸¥ ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¿Í ÇÔ²² È£ÃâÇÕ´Ï´Ù. »ý¼ºµÈ .class ÆÄÀÏÀº ÁöÁ¤µÈ Ãâ·Â Æú´õ¿¡ ±â·ÏµË´Ï´Ù. Àüü Àϰýó¸® ºôµåÀÇ °æ¿ì Ãâ·Â Æú´õ¿¡ ÀÖ´Â ¸ðµç .class ÆÄÀÏÀº ¹«È¿ ÆÄÀÏÀÌ ¾øµµ·Ï 'Á¤¸®'µË´Ï´Ù. ÇØ´ç ¼Ò½º ÆÄÀÏÀÌ ¾ø´Â ¸ðµç .class ÆÄÀÏÀ» Ãâ·Â Æú´õ ´ë½Å Ŭ·¡½º °æ·Î¿¡ ÀÖ´Â º°µµÀÇ Å¬·¡½º ÆÄÀÏ Æú´õ¿¡ µÎ´ÂÁö È®ÀÎÇϽʽÿÀ.

Ãß°¡ ÀÚ¿ø ÆÄÀÏÀº Ãâ·Â Æú´õ¿¡µµ º¹»çµË´Ï´Ù. ÀÚ¿ø ÇÊÅ͸¦ »ç¿ëÇÏ¿© º¹»çµÇ´Â ÀÚ¿ø ÆÄÀÏÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, '.ignore'·Î ³¡³ª´Â ÆÄÀÏ ¹× 'META-INF'¶ó´Â Æú´õ¸¦ ÇÊÅ͸µÇÏ·Á¸é ´ÙÀ½À» »ç¿ëÇϽʽÿÀ.

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

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

.classpath ÆÄÀÏ¿¡ ¿À·ù°¡ ÀÖÀ» ¶§ ´ÜÀÏ ¿À·ù¸¸ »ý¼ºÇϵµ·Ï ÁõºÐ ¹× Àϰýó¸® ºô´õ¸¦ ±¸¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¿É¼ÇÀº ±âº»ÀûÀ¸·Î ¼³Á¤µÇ¸ç ÀϹÝÀûÀ¸·Î jar ÆÄÀÏ ´©¶ôÀ¸·Î ÀÎÇØ ÀϾ ¸¹Àº ¿À·ù¸¦ Á¦°ÅÇÕ´Ï´Ù. JavaCore ÀÇ CORE_JAVA_BUILD_INVALID_CLASSPATH ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

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.5 ¹öÀüÀº Ant 1.5°¡ ¸±¸®½ºµÉ ¶§ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¹®Á¦Á¡ ÆÇº°

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
  IWorkingCopy workingCopy = (IWorkingCopy)unit.getWorkingCopy(null, null, problemRequestor);
  ((IOpenable)workingCopy).getBuffer().setContents("public class X extends Zork {}");

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

Copyright IBM Corporation and others 2000, 2002. All Rights Reserved.