com.nik.mypackage 패키지에 main 메소드가있는 클래스가있는 Java 프로젝트가 있습니다. 하나의 라이브러리 만 참조되었습니다. someLib-5.0.2.jarAnt 빌드를 사용하여 만든 jar 파일에 NoClassDefFound 오류가 발생했습니다.
이 라이브러리는 Eclipse의 lib 폴더에 있으며 빌드 경로에 추가됩니다.
나는 아래 개미 스크립트 대상을 사용하여 응용 프로그램의 실행 항아리를 만드는 오전은 :
<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
내가 뭘 잘못
someLib.jar
에서 클래스에 대한 NoClassDefFoundError를 던지고을 ??읽어 주셔서 감사합니다.
다른 jar 파일 안에 jar 파일을 중첩시킬 수 없습니다. 라이브러리 항아리를 확장하고 애플리케이션 항아리 안에 클래스를 묶거나 파일 시스템에 항아리가 있어야하고 그에 따라 매니페스트의 상대 경로를 설정해야합니다. –