Ant /外部库

时间:2016-10-14 17:48:58

标签: java eclipse ant

当我使用外部库(lucene)并通过eclipse运行我的java应用程序(运行应用程序)时,所有类似路径中的库都能正常工作。
但是当我使用Ant时,我在这里遇到了这个错误:

  

java.lang.ClassNotFoundException:org.apache.lucene.store.Directory

我猜这个错误出现了,导致错误的类路径。当ant编译代码时,Stange没有发生编译错误。这是我的蚂蚁文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build">
    <path id="classpath">
        <pathelement location="bin"/>
        <pathelement location="GUI_P/lucene-6.2.0/lucene-6.2.0/analysis/common/lucene-analyzers-common-6.2.0.jar"/>
        <pathelement location="GUI_P/lucene-6.2.0/lucene-6.2.0/core/lucene-core-6.2.0.jar"/>
        <pathelement location="GUI_P/lucene-6.2.0/lucene-6.2.0/grouping/lucene-grouping-6.2.0.jar"/>
        <pathelement location="GUI_P/lucene-6.2.0/lucene-6.2.0/queryparser/lucene-queryparser-6.2.0.jar"/>
        <pathelement location="GUI_P/lucene-6.2.0/lucene-6.2.0/queries/lucene-queries-6.2.0.jar"/>
    </path>
    <target name="init">
        <mkdir dir="bin"/>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>
    <target depends="init" name="build">
        <javac debug="true" destdir="bin" includeantruntime="true">
            <src path="src"/>
            <classpath refid="classpath"/>
        </javac>
    </target>    
    <target name="jar" depends="build">
        <mkdir dir="GUI_P"/>
        <jar destfile="GUI_P/GUI_P.jar" basedir="bin">
            <manifest>
                <attribute name="Main-Class" value="gui.Gui"/>
            </manifest>
        </jar>
    </target>
    <target name="copySamples" depends="jar">  
        <copy todir="GUI_P/samples">
          <fileset dir="src/gui/samples"/>
         </copy>
    </target>   
</project>

你能帮我解决一下吗?

1 个答案:

答案 0 :(得分:0)

这并不奇怪,因为ClassNotFoundException总是在尝试动态实例化(通过Class.forName())时出现。因此,相同的类路径可能会产生正确的编译,但执行不完整:它缺少动态依赖

在您的情况下,您必须在执行类路径中添加 lucene-core 库(至少)。