trustmiracle
سه شنبه 31 اردیبهشت 1392, 18:35 عصر
من شروع کردم به نوشتن یک برنامه جاوا با notepad++ و برای کامپایلش هم از ant استفاده می کنم. حالا من برام یک سوال پیش اومده. وقتی با نت بینز یک برنامه می نویسی فایل jar تولیدی را که باز کنی یک پوشه به نام lib داره که تو این پوشه کتابخانه هایی که تو برنامه ازشون استفاده شده را قرار میده.
من هم کنار پوشه src ام یک پوشه به نام lib قرار دادم و فایل های jar ای که تو برنامه ام نیاز دارم را داخلش قرار میدم بعد با استفاده از path و classpathref توی فایل build.xml معرفیشون می کنم. وقتی برنامه را کامپایل می کنم و فایل jar می سازم بدون مشکل انجام میده و فایل jar را هم تولید می کنه. منتها وقتی من فایل jar را باز می کنم می بینم کلاس ها و پکیج هام هستند ولی خبری از کتابخانه های که ازشون استفاده مردم نیست.
حالا من کجای کار را اشتباه کردم
این یک نمونه از فایل build.xml ای که استفاده کردم:
<project name="Ramznegar" basedir=".">
<property name="src.dir" value="src" />
<property name="build.dir" value="build" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="jar.dir" value="${build.dir}/jar" />
<property name="lib.dir" value="lib" />
<property name="main-class" value="UI.Ramznegar" />
<path id="bl">
<fileset dir="../BusinessLayer/build/jar" includes="*.jar" />
<fileset dir="../DataAccessLayer/build/jar" includes="*.jar" />
</path>
<target name="clean">
<mkdir dir="${build.dir}" />
</target>
<target name="compile" depends="clean">
<mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="bl" />
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}" />
<jar file="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}" />
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true" />
</target>
</project>
من هم کنار پوشه src ام یک پوشه به نام lib قرار دادم و فایل های jar ای که تو برنامه ام نیاز دارم را داخلش قرار میدم بعد با استفاده از path و classpathref توی فایل build.xml معرفیشون می کنم. وقتی برنامه را کامپایل می کنم و فایل jar می سازم بدون مشکل انجام میده و فایل jar را هم تولید می کنه. منتها وقتی من فایل jar را باز می کنم می بینم کلاس ها و پکیج هام هستند ولی خبری از کتابخانه های که ازشون استفاده مردم نیست.
حالا من کجای کار را اشتباه کردم
این یک نمونه از فایل build.xml ای که استفاده کردم:
<project name="Ramznegar" basedir=".">
<property name="src.dir" value="src" />
<property name="build.dir" value="build" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="jar.dir" value="${build.dir}/jar" />
<property name="lib.dir" value="lib" />
<property name="main-class" value="UI.Ramznegar" />
<path id="bl">
<fileset dir="../BusinessLayer/build/jar" includes="*.jar" />
<fileset dir="../DataAccessLayer/build/jar" includes="*.jar" />
</path>
<target name="clean">
<mkdir dir="${build.dir}" />
</target>
<target name="compile" depends="clean">
<mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="bl" />
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}" />
<jar file="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}" />
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true" />
</target>
</project>