2010-06-28 4 views
2

이전에 이클립스에서 이런 오류를 다루었지만, 왜 내가 이번에는 그걸 얻고 있는지 전혀 모른다. 내 빌드 경로 및 내 "lib"폴더에 Apache Commons IO 라이브러리가 있습니다.Eclipse에서 Java 가져 오기를 찾을 수 없습니까?

아래 오류가 있습니다. 꽤 간단합니다.

[javac] Compiling 3 source files to C:\Users\Justian\workspaces\ConnectionCompiler\build 
[javac] C:\Users\Justian\workspaces\ConnectionCompiler\src\jab\jm\readers\ExcelReader.java:5: package org.apache.commons.io does not exist 
[javac] import org.apache.commons.io.FileUtils; 
[javac]       ^
[javac] C:\Users\Justian\workspaces\ConnectionCompiler\src\jab\jm\readers\FileManager.java:5: package org.apache.commons.io does not exist 
[javac] import org.apache.commons.io.FileUtils; 
[javac]       ^
[javac] C:\Users\Justian\workspaces\ConnectionCompiler\src\jab\jm\readers\FileManager.java:12: cannot find symbol 
[javac] symbol : variable FileUtils 
[javac] location: class jab.jm.readers.FileManager 
[javac]   return FileUtils.convertFileCollectionToFileArray(FileUtils.listFiles(
[javac]               ^
[javac] C:\Users\Justian\workspaces\ConnectionCompiler\src\jab\jm\readers\FileManager.java:12: cannot find symbol 
[javac] symbol : variable FileUtils 
[javac] location: class jab.jm.readers.FileManager 
[javac]   return FileUtils.convertFileCollectionToFileArray(FileUtils.listFiles(
[javac]    ^
[javac] 4 errors 

왜 클래스를 가져올 수 없습니까? Eclipse의 자동 수정 기능을 사용하여 해당 특정 기능을 추가하는 것이 좋습니다.

감사합니다.

Justian

편집 :

오. 죄송합니다. 한 번에 여러 가지 일을하고 있습니다. 물론 이것은 Ant 문제 일 것입니다.

확인. 여기에 제 빌드 파일이 있습니다. 흥미로운 점은 이것이 과거에 효과가 있었다는 것입니다. 왜 지금은 효과가 없을까요?

<?xml version="1.0" ?> 

<project name="ServerJar" default="dist" basedir="."> 
    <description> 
     Builds client files into .jar 
    </description> 
    <!-- [build variables] --> 
    <property name="src" location="src" /> 
    <property name="build" location="build" /> 
    <property name="dist" location="dist" /> 

    <target name="init"> 
     <!-- makes time stamp to be used in jar name --> 
     <tstamp /> 
     <!-- creates build directory structure --> 
     <mkdir dir="${build}" /> 
    </target> 

    <target name="compile" depends="init" description="Compiles the source"> 
     <!-- compiles the java code from ${src} into ${build} --> 
     <javac srcdir="${src}" destdir="${build}" /> 
    </target> 

    <target name="dist" depends="compile" description="Generates distributable"> 
     <!-- creates the distribution directory --> 
     <mkdir dir="${dist}/lib" /> 

     <!-- puts everything in ${build} into the jar file --> 
     <jar jarfile="${dist}/lib/CC-${DSTAMP}.jar" basedir="${build}"> 
      <manifest> 
       <attribute name="Main-Class" value="jab.jm.Test" /> 
      </manifest> 
     </jar> 

     <!-- makes a jar file for quick test execution --> 
     <jar jarfile="${dist}/lib/CC.jar" basedir="${build}"> 
      <manifest> 
       <attribute name="Main-Class" value="jab.jm.Test" /> 
      </manifest> 
     </jar> 
    </target> 

    <target name="clean" description="Cleans up the extra build files"> 
     <!-- deletes the ${build} and ${dist} directories --> 
     <delete dir="${build}" /> 
     <delete dir="${dist}" /> 
    </target> 
</project> 

편집 : 당신은 개미에서 출력을 게시

<?xml version="1.0" ?> 

<project name="ServerJar" default="dist" basedir="."> 
    <description> 
     Builds client files into .jar 
    </description> 
    <!-- [build variables] --> 
    <property name="src" location="src" /> 
    <property name="build" location="build" /> 
    <property name="dist" location="dist" /> 
    <property name="lib" location="lib" /> 
    <!-- [path to packages] --> 
    <path id="master-classpath"> 
     <fileset dir="${lib}"> 
      <include name="*.jar"/> 
     </fileset> 
    </path> 


    <target name="init"> 
     <!-- makes time stamp to be used in jar name --> 
     <tstamp /> 
     <!-- creates build directory structure --> 
     <mkdir dir="${build}" /> 
    </target> 

    <target name="compile" depends="init" description="Compiles the source"> 
     <!-- compiles the java code from ${src} into ${build} --> 
     <!-- <javac srcdir="${src}" destdir="${build}" /> --> 
     <javac destdir= "${build}"> 
      <src path="${src}"/> 
      <classpath refid="master-classpath"/> 
     </javac> 
    </target> 

    <target name="dist" depends="compile" description="Generates distributable"> 
     <!-- creates the distribution directory --> 
     <mkdir dir="${dist}/lib" /> 

     <!-- puts everything in ${build} into the jar file --> 
     <jar jarfile="${dist}/lib/CC-${DSTAMP}.jar" basedir="${build}"> 
      <manifest> 
       <attribute name="Main-Class" value="jab.jm.Test" /> 
      </manifest> 
     </jar> 

     <!-- makes a jar file for quick test execution --> 
     <jar jarfile="${dist}/lib/CC.jar" basedir="${build}"> 
      <manifest> 
       <attribute name="Main-Class" value="jab.jm.Test" /> 
      </manifest> 
     </jar> 
    </target> 

    <target name="clean" description="Cleans up the extra build files"> 
     <!-- deletes the ${build} and ${dist} directories --> 
     <delete dir="${build}" /> 
     <delete dir="${dist}" /> 
    </target> 
</project> 

답변

6

: 여기에 앞으로이 문제가있는 사람에 대해서는 내 최종 빌드 파일이었다.

Eclipse와 build.xml 파일을 통합하지 않는 한, 프로젝트의 클래스 경로 아이디어는 build.xml에서 프로젝트를 빌드하는 데 사용 된 클래스 경로와 완전히 별개이며 상호 배타적입니다.

해결책 : 클래스를 빌드 할 때 build.xml이 commons-io 라이브러리를 참조하는지 확인하십시오.


업데이트 : 당신은 무엇이든지 없는 클래스 경로 참조하여 클래스를 컴파일하려고 같이 build.xml 파일에서, 당신이 게시 한 조각은 보인다. javac 작업에 라이브러리 참조를 찾을 위치를 알려줘야합니다. 여기

는 클래스 경로를 참조하는 javac 작업을 사용하는 예는 다른 곳에서 선언입니다 :

<path id="master-classpath"> 
    <fileset dir="${lib.dir}"> 
     <include name="*.jar"/> 
    </fileset> 
</path> 

<javac destdir="${classes.build.dir}"> 
    <src path="${src.dir}"/> 
    <classpath refid="master-classpath"/> 
</javac> 

이 디렉토리가 가리키는에 .jar로 끝나는 모든 파일을 참조하는 개미 "경로"를 설정 ${lib.dir} 속성 예를 들어 특정 명명 된 jar 파일 만 참조하거나 라이브러리가있는 여러 디렉토리가있는 경우 필요에 따라이 옵션을 변경할 수 있습니다.

+0

후속 조치에 대한 감사, Matt. 질문은 내 빌드 파일에 제공 한 코드의 두 번째 부분을 구현할 위치입니다. 저는 Ant와별로 다르지 않습니다. 내가 보낸 파일은 1 년 전에 만들어졌습니다. 감사합니다. –

+0

' '부분은 파일의 어느 곳에서나 선언 될 필요가 있습니다 (Ant가 참조되기 전에 선언 할 필요는 없다고 생각합니다). 그리고 제 javac 예제는 이미 가지고있는 것을 대체/보완해야합니다. –