فرض کنید به عنوان یک توسعهدهنده میخواهید پروژه خودتون رو برای استفاده کاربر منتشر کنید. آیا پروژتون رو با دهها یا صدها کلاس نوشته شده در فولدرهای مختلف در اختیار کاربر قرار میدید؟ نه! اینجاست که باید با jar آشنا بشید.
فایل jar یک فایل فشردهشده است که کلاسهای جاوا، عکس، متن و... به همراه فایل Manifest(در ادامه بهش میرسیم) را در خود جای میدهد و از فرمتهای فشردهسازی مانند zip استفاده میکند.
برای شروع اول مطمئن بشید که JDK روی سیستمتون نصب است. از این لینک میتونید نسخه مورد نظرتون رو دانلود کنید.
برای ساخت فایل jar کافیست به فولدری که فایلها و کلاسها قرار گرفتهاند برویم و با دستور زیر در محیط ترمینال فایل jar ساخته میشود:
Syntax:
jar -cf jarfilename inputfiles
در اینجا ما با دو فایل JavaClass1.class و JavaClass2.class روبهرو هستیم و با دستور زیر یک jar file ساخته شده:
jar -cvf export.jar *.class
استفاده از v- فرایند فشردهسازی را در خروجی نمایش میدهد.
اگر تعداد زیادی فایل کلاس را میخواهید در فایل jar قرار دهید میتوانید از class.* استفاده کنید به جای اینکه تک تک نام فایلها را بنویسید.
پس از آنکه یک فایل jar بدست آمد، برای دیدن فایلهای موجود در آن از دستور زیر استفاده میشود:
Syntax:
jar -tf jarfilename
Example:
jar -tf export.jar
خروجی:
META-INF/ META-INF/MANIFEST.MF JavaClass1.class JavaClass2.class
یک فایل jar به طور پیش فرض دارای فایل Manifest میباشد و همیشه در فولدر META-INF قرار دارد.
برای extract کردن از دستور زیر استفاده میشود:
Syntax:
jar -xf jarfilename
Example:
jar -xf export.jar
برای extract کردن حتی میتوان از ابزارهایی که یک فایل zip را extract میکنند، استفاده کرد.
اگر پروژهی ما یک پروژهی حجیم و بزرگی باشد، پس از تغییراتی که در پروژه اعمال میکنیم، برای تبدیل آن به فایل جدید jar زمان طولانی صرف میشود. در اینجا بهتر است به جای ساختن یک فایل جدید jar، فایل قبلی را آپدیت بکنیم.
برای آپدیت کردن محتوای فایل از دستور زیر استفاده میکنیم:
Syntax:
jar -uf jar-file input-file(s)
Example:
java -uf export.jar *.class
بعد از نوشتن نام فایل jar مورد نظر، فایلها و کلاسهایی را که میخواهیم آپدیت بکنیم مینویسیم. این امکان باعث میشود تا به جای اینکه دوباره تمام فایلها را فشرده بکنیم، فقط فایلهایی که تغییرات داشتنند را جایگزین فایلهای قبلی در jar بکنیم.
پیش از آنکه یاد بگیریم چگونه یک فایل jar را اجرا کنیم، باید آن را برای اجرا شدن آمادهسازی کنیم.
فرض میکنیم در پروژه، کلاسی با نام Main.class ساختهایم و در آن متد main را پیادهسازی کردهایم. اکنون باید به فایل jar بفهمانیم که متد main در چه کلاسی قرار دارد تا هنگام اجرا شدن jar، آن را اجرا کند. با استفاده از دستور زیر هنگام ساخت فایل jar این امکان را اضافه میکنیم:
Syntax:
jar -cfe jarfilename mainclass import-files
Example:
jar -cfe export.jar Main client.class server.class logo.jpeg
توجه کنید که کلاس Main بدون class. نوشته میشود.
روش دیگری هم برای اضافه کردن Main وجود دارد که در ادامه در مبحت Manifest به آن میرسیم.
اکنون میتوان فایل jar خود را با دستور زیر اجرا کرد:
Syntax:
java -jar jarfilename
Example:
java -jar export.jar
زمانی که یک فایل jar ساخته میشود به صورت اتوماتیک در آن فایل Manifast هم ساخته میشود. حالا اصلا Manifast چی است؟
هر فایل jar یک فایل Manifest دارد که جزئیات و اطلاعات آن در Manifest نوشته شده است. نام این فایل به صورت پیش فرض MANIFEST.MF نامگذاری شده و در فولدر META-INF قرار دارد. در تصویر بالا نمونهای از این فایل آمدهاست؛ حتی میتواند شامل جزئیات بیشتری باشد.
ورودی فایل Manifest از دو قسمت تشکیل شده است، نام و مقدار. نوشتن نام و مقدارهای Manifest چند نکته دارد که به آن میپردازیم:
اگر فایل jar را ساختهایم و میخواهیم تغییراتی روی فایل Manifest بدهیم؛ ابتدا یک فایل txt. میسازیم و سپس برای اعمال تغییرات از دستور زیر استفاده میکنیم:
Example:
jar -ufm export.jar manifest.txt
در قسمتهای بالاتر توضیح داده شد که چگونه هنگام ساخت یک فایل jar، کلاس main را برای اجرا شدن به آن اضافه کنیم. حال اگر فایل jar را قبلا ساخته باشیم و کلاس main را به آن اضافه نکرده باشیم، کافیست خط زیر را به فایل Manifest اضافه کنیم:
Main-Class: Main
حتما دقت کنید که class. پس از آن را نباید بنویسیم.
تا به این جا با jar و با انواع دستورهاش آشنا شدیم. اگر پروژهی ما از کتابخانههای خارجی استفاده میکرد، قرار دادن این کتابخانهها در فایل jar کمی پیچیده میشد. محیطهای توسعه قابلیتهای پیشرفتهای در اختیارمان قرار میدهند که کار را برای ما سادهتر میکنند. در این قسمت ساختن یک فایل jar را در IntelliJ بررسی میکنیم.
فایلهای jar به طور پیش فرض در مسیر out/artifacts
قرار میگیرد.
Working with JAR and Manifest files In Java - GeeksforGeeks
Jar files in Java - GeeksforGeeks
Compile and build applications with IntelliJ IDEA | IntelliJ IDEA
اگر دوست داشتید در کانال تلگرام عضو بشید.
#SBU_CE_AP_00