خیلی راحت در هنگام کامپایل از دستور javac -classpath که بعد از classpath- ادرس فولدری که jar فایلها در آن است را می دهی
javac -classpath \examples\lib\ \examples\greetings\Hi.java
که در بالا \examples\lib\ همان فولدر است که jar فایلها در آن است و examples\greetings\Hi.java\ هم فایلی است که قرار است کامپایل شود .
ایشون در زمان اجرا می خوان
تا جایی که من می دونم در نسخه ۶ فقط class loader داریم
البته از Reflection هم میتوانید استفاده کنید .
در ورژن ۶ فقط در زمان اجرا می تونه یک کلاس عوض بشه ( چون کلاس توسط jvm باید در حافظه load بشه و jvm فقط می تونه کلاس رو به روز کنه
البته همین امکان جالب هنوز در خیلی از نرم افزار ها پیاده نشده ( مثل tomcat و......)
در ورژن ۷ میشه jar فایل لود کرد
اتفاقا اساس TomCat بر reflection استوار است و تمام war فایلها بصورت reflective لود میشود .
jar فایل هم چیز عجیب غریبی نیست همون کلاس که اومدن یکپارچه کردند .( TomCat دقیقا برا war فایل این کارو میکند ( war فایل نسخه وب jar فایل است )
دوست عزیز فکر کنم منظور من رو درست متوجه نشدید
مثال می زنم
شما وقتی یک servlet رو تغییر می دید برای استفاده از اون نیاز دارید container رو دوباره راه اندازی کنید ( یا redeploy کنید )
چون کلاس های شما در حافظه لود نشده ( بر عکس jsp که خودش هر بار که نیاز باشه کامپایل می کنه و لودش می کنه )
اینم یک پلاگین برای این کار
http://www.zeroturnaround.com/javarebel/war فایل هم ربطی به صحبت من نداشت
شاید منظورتون auto deploy باشه که با صحبت من فرق داره
در auto deploy یکبار همه class ها لود میشن
ولی من منظورم به جز redeploy کردن هست
چون در این زمان محصولمون قادر به سرویس دهی نیست و اگر با jpa و.... آشنا باشید می دونید که در redeploy شدن پروژه داستان های زیادی داریم
ولی این امکانی که بنده می گم jvm class رو خودش لود می کنه ( در runtime )
بله درسته من فولدر رو add کردم در پست اولم توضیح دادم می خوام تمام فایل های jarی که در این پوشه قرار می گیره رو به برنامم import کنم
فردا توضیح می دم