در پست قبلی روش کامپایل و اجرای یک برنامهء خیلی ساده و تک فایل جاوا رو نشون دادیم. در اون برنامه از پکیج خبری نبود.
اما اکثر برنامه های جاوا از package استفاده میکنن.
حالا میخوایم طرز کامپایل و اجرای این برنامه ها در خط فرمان رو توضیح بدیم.
خب میدونید که در جاوا، اسم پکیج ها با دایرکتوری های کد منبع ارتباط مستقیم دارن. یعنی مثلا اگر اسم پکیج یک فایل رو گذاشتیم packageOne، اون فایل باید در یک دایرکتوری بنام packageOne قرار بگیره. یا اگر گذاشتیم packageOne.subPackage اونوقت باید یک دایرکتوری بنام subPackage هم در داخل packageOne ایجاد کنیم و فایل جاوا رو داخل اون بذاریم.
همچنین این نام پکیج ها برای نامیدن کلاس های موجود در فایلهای کد منبع ما هم استفاده میشن، یعنی مثلا در ابتدای یک فایل جاوا مینویسیم import packageOne.Parent و به این شکل کلاس Parent رو که در پکیج packageOne قرار داره به درون سورس جاری ایمپورت میکنیم.
خب میریم سر کار عملی.
در برنامهء تست ما دوتا فایل جاوا داریم که هرکدام توی پکیج جداگانه خودشون هستن. یک فایل بنام Parent.java داریم در پکیج packageOne، دیگری فایل Child.java که در پکیج packageTwo است. خب در پوشهء جاری که قاعدتا پوشهء ریشهء پروژهء جاوای ماست، دوتا فولدر بنامهای packageOne و packageTwo ایجاد کنید و فایل Parent.java رو در فولدر packageOne و فایل Child.java رو در packageTwo قرار بدید.
محتویات Parent.java اینه:
package packageOne;
public class Parent {
protected String name = "prasad kharkar";
}
و محتویات Child.java:
package packageTwo;
import packageOne.Parent;
class Child extends Parent {
public void testMethod() {
System.out.println("name is " + name);
}
public static void main(String args[]) {
Child n = new Child();
n.testMethod();
}
}
پوشهء جاری خط فرمان ما باید در ریشهء پروژه باشه.
برای کامپایل Parent.java اینطور عمل میکنیم:
javac packageOne\Parent.java
و برای کامپایل Child.java:
javac packageTwo\Child.java
حالا اگر بررسی کنید فایل class مربوط به هر فایل جاوا در پوشهء مربوط به پکیج خودش ایجاد شده.
و سرانجام اجرای برنامه با این فرمان:
java packageTwo.Child
منبع این مطالب: http://www.thejavageek.com/2013/07/2...-java-programs
خب حالا چطور یک فایل jar ایجاد کنیم؟
اگر میخوایم یک jar قابل اجرای مستقیم (standalone) داشته باشیم ابتدا باید entry point برنامه (کلاسی که متد main برنامه درش هست) رو مشخص کنیم. برای این کار یک فایل بنام manifest.txt با این محتویات در فولدر ریشهء پروژه ایجاد میکنیم:
Main-Class: packageTwo.Child
نکته: دقت کنید این فایل با new line خاتمه پیدا کرده باشه (در انتهای آخرین خط، کلید Enter رو زده باشید).
فرمان ایجاد فایل jar:
jar cvfm test.jar manifest.txt .
کاراکتر آخر غیر از نقطه میتونست ستاره (*) هم باشه.
این فرمان خود فایل manifest.txt رو هم به فایل jar اضافه میکنه، چون این فایل در دایرکتوری جاری و پروژه ما هست و با این فرمان به jar گفتیم که تمام فایلهای موجود در این دایرکتوری و دایرکتوری های زیرمجموعه اون رو اضافه کن. نیازی نیست این فایل در فایل jar ما باشه، ولی بودنش ضرری هم نمیزنه. اگر بخوایم حذفش کنیم میتونیم مثلا اون رو در پوشهء دیگری قرار بدیم و مثلا از فرمانی به این شکل استفاده کنیم:
jar cvfm test.jar c:\manifest.txt *
یا میتونستیم فایلهایی رو که میخوایم به jar اضافه بشن با آدرس دقیق اونها مشخص کنیم تا فایلهای دیگری به jar ما اضافه نشن:
jar cvfm test.jar manifest.txt packageOne\Parent.class packageTwo\Child.class