내 Java 소스 코드에 내 응용 프로그램의 "lib"디렉토리에 저장된 Java 아카이브 (.jar)의 다른 클래스를 사용하고 싶습니다. 하지만 "ant ant"를 실행하면 항상 "java.lang.NoClassDefFoundError"메시지가 나타납니다. 나는 그것을 고치기 위해 여러 가지 시도를했지만 아무 것도 효과가 없었습니다 ... 어쩌면 누군가가 나를 도울 수 있습니까?Ant build.xml 파일에 외부 라이브러리를 포함시키는 방법은 무엇입니까?
이것은 내 build.properties 파일 :
app.name=MyApplication
app.version=1.0
main.class=mypackage.MyMain
build.dir=build
classes.dir=${build.dir}/classes
jar.dir=${build.dir}/jar
dist.dir=dist
src.dir=src
test.dir=test
lib.dir=lib
이 내 의 build.xml입니다 :
<?xml version="1.0" encoding="UTF-8" ?>
<project name="My Project" default="run" basedir=".">
<description>My description.</description>
<property file="build.properties" />
<path id="classpath">
<fileset dir="${lib.dir}" includes="*.jar"/>
</path>
<!-- Initialization -->
<target name="init" description="Prepare needed directories.">
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${jar.dir}" />
<mkdir dir="${dist.dir}" />
<mkdir dir="${lib.dir}" />
</target>
<!-- Cleanup -->
<target name="clean" description="Remove all files created by the build/test process.">
<delete dir="${classes.dir}" />
<delete dir="${dist.dir}" />
</target>
<!-- Compile application -->
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
debug="yes"
includeantruntime="false">
<!-- <classpath refid="classpath" /> -->
</javac>
</target>
<!-- Java Archive -->
<target name="jar" depends="compile">
<!--<delete file="${jar.dir}/${app.name}-${app.version}.jar"/>-->
<delete dir="${jar.dir}"/>
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${app.name}-${app.version}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Class-Path" value="${lib.dir}"/>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
</target>
<!-- Run application -->
<target name="run" depends="jar">
<java jar="${jar.dir}/${app.name}-${app.version}.jar"
fork="true">
</java>
<!--
<java fork="true" classname="${main.class}">
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${app.name}-${app.version}.jar"/>
</classpath>
</java>
-->
</target>
</project>
누군가가 도울 수 있다면 좋을 것이다.
건배!
베니
무엇을 당신의'lib' 디렉토리가 생겼는데? 모든 jar 파일이 해당 디렉토리에 덤프되었거나 서브 디렉토리가 있습니까? –
모든 jar 파일은 하위 디렉토리없이 해당 디렉토리에 있습니다. 구조는 다음과 같습니다. ./lib/log4j-1.2.9.jar,./lib/cobertura.jar, ./lib/easymock-3.0.jar, ... jar 파일에 어떻게 라이브러리를 포함시킬 수 있습니까? –