我有一個包含com.nik.mypackage包中的main方法的java項目。只有一個庫被引用,它是someLib-5.0.2.jar使用ant build創建的jar的NoClassDefFound錯誤
這個庫位於eclipse的lib文件夾中,並被添加到構建路徑中。
我使用的是下面的ant腳本目標創建應用程序的可執行的JAR:
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<target name="init">
<tstamp/>
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init"
description="compile the source " >
<javac srcdir="${src}" destdir="${build}">
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/someLib-5.0.2.jar"/>
</classpath>
</javac>
</target>
<target name="dist" depends="compile" description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<copy todir="${build}/lib" verbose="true" file="lib/someLib-5.0.2.jar" />
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/myProject-${DSTAMP}.jar" basedir="${build}">
<manifest>
<attribute name="Main-Class" value="com.nik.mypackage.MainClass"/>
<attribute name="Class-Path" value="../lib/someLib.jar"/>
</manifest>
</jar>
</target>
罐子MyProject的-20111126.jar是越來越創建。但是,運行下面的命令:
c:>java -jar MyProject-20111126.jar
拋出一個NoClassDefFoundError的一類someLib.jar
我在做什麼錯?
感謝您的閱讀!
您不能在其他jar文件中嵌入jar文件。您需要展開庫jar並將其類包裝到應用程序jar中,或者需要在文件系統上有jar,並相應地在manifest中設置相對路徑。 –