在Eclipse中找不到Java Import?

Jus*_*yer 2 java eclipse apache ant package

我之前在Eclipse中处理过这样的错误,但我不知道为什么我这次会得到它.我在Build Path和我的"lib"文件夹中都有Apache Commons IO库.

我已经给出了以下错误.这很简单.

[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
Run Code Online (Sandbox Code Playgroud)

为什么不能导入课程?甚至建议我使用Eclipse的自动更正添加特定的一个.

非常感谢!

瑞斯蒂昂

编辑:

哦.抱歉.一次做多件事.当然这将是一个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>
Run Code Online (Sandbox Code Playgroud)

编辑:对于将来遇到此问题的人,这是我的最终构建文件:

<?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>
Run Code Online (Sandbox Code Playgroud)

mat*_*t b 6

你发布了Ant的输出.

除非您以某种方式将Eclipse与build.xml文件集成在一起,否则Eclipse对项目的类路径的想法与用于在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>
Run Code Online (Sandbox Code Playgroud)

这将设置一个Ant"路径",它指.jar的是以${lib.dir}属性指向的目录结尾的每个文件.您当然可以更改它以满足您的需要,例如,您只想引用某些命名的jar文件,或者您有几个包含库的不同目录.