Ant / External libraries



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

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

我猜这个错误出现了,原因是不正确的类路径。奇怪的是,当ant编译代码时没有出现编译错误。这是我的ant文件:

<?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>
你能帮我一下吗?

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

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

相关内容

  • 没有找到相关文章

最新更新