簡體   English   中英

在Eclipse中找不到Java導入?

[英]Cannot find Java Import in Eclipse?

之前,我已經在Eclipse中處理過類似的錯誤,但是我不知道為什么這次要得到它。 我的構建路徑以及“ 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

為什么不能導入課程? 甚至建議我使用Eclipse的自動更正功能添加該特定功能。

非常感謝!

瑞斯蒂昂

編輯:

哦。 抱歉。 一次從事多項工作。 當然,這將是一個螞蟻問題。

好。 這是我的構建文件。 有趣的是,這在過去一直有效。 為什么現在不起作用?

<?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>

您發布了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>

這將設置一個Ant“路徑”,該路徑引用${lib.dir}屬性指向的目錄中每個以.jar結尾的文件。 當然,您可以更改此設置以滿足您的需要,例如,如果您只想引用某些命名的jar文件,或者您有幾個包含庫的不同目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM