当我使用外部库(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>
你能帮我解决一下吗?
答案 0 :(得分:0)
这并不奇怪,因为ClassNotFoundException
总是在尝试动态实例化(通过Class.forName()
)时出现。因此,相同的类路径可能会产生正确的编译,但执行不完整:它缺少动态依赖。
在您的情况下,您必须在执行类路径中添加 lucene-core 库(至少)。