मेरे जावा स्रोत-कोड में मैं अपने अनुप्रयोग की "lib" निर्देशिका में संग्रहीत जावा अभिलेखागार (.jar) से विभिन्न वर्गों का उपयोग करना चाहता हूं। लेकिन अगर मैं "चींटी रन" करता हूं तो मुझे हमेशा "java.lang.NoClassDefFoundError" संदेश मिलता है। मैंने इसे ठीक करने के लिए कई चीजों की कोशिश की लेकिन कुछ भी काम नहीं किया ... शायद कोई यहां मेरी मदद कर सकता है?चींटी 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' निर्देशिका कैसा दिखता है? क्या सभी जार फ़ाइलों को उस निर्देशिका में डंप किया गया है, या उपनिर्देशिकाएं हैं? –
सभी जार फ़ाइलें उस निर्देशिका में हैं (बिना किसी उप-निर्देशिका के)। संरचना इस तरह दिखती है: ./lib/log4j-1.2.9.jar,।/lib/cobertura.jar, ./lib/easymock-3.0.jar, ... मैं अपने जार फ़ाइल में उन पुस्तकालयों को कैसे शामिल कर सकता हूं? –