March 13, 2006

... עושה לי די עצוב Classpath

מה קורה?
הנה עוד שבוע הפציע עלינו ל... טובה (אני משער) ונראה כאילו פיתוח בפלקס יהיה מנת חלקו של כל הלוקה בראשו.
אני רואה עצמי כבנאדם מסודר. אוהב את הדברים מאורגנים, את התיקיות עומדות פלס ליד החדר-אוכל, את הפאקג'ים מסודרים כמו חומה של ריאל מדריד ולכן, גם כשאני עובד על פלקס אני דואג להשחיל ספריית classes שתהיה הפאקאג' שלי לכל המחלקות שאני אשתמש בהן באפליקציה. ההגדרה למיקום, או כמו שנקראת בפי החבר'ה: classpath נעשית על גבי קובץ הפרוייקט (קליק ימני, נו – אני צריך לעשות הכל לבד?) עצמו והכל טוב ויפה.
משום מה, אני מקבל הודעת שגיאה, או יותר נכון לומר "התרעה" (משולש צהבהב עם סימן קריאה) שה-classpath שלי הוא למעשה תת-ספרייה של הפרוייקט. למה מתריעים על זה? אדובי אומרים שזה בכדי למנוע שמות פאקג'ים "מעורפלים" (שזה התרגום הכי טוב שמצאתי ל-unambiguous). חיפשתי ונברתי, ונראה כי אפשר להגדיר לקומפיילר להתעלם מהעניין ע"י הגדרת המאפיין ה-MXMLC: allow-classpath-overlap = true.
זה נחמד, חשבתי לעצמי, אבל מסתבר שמדובר בפקודה היכולה לחיות רק בסביבת קוד MXML ולא בפרוייקט as3 טיפוסי.
זה עושה לי... די עצוב.
לא התייאשתי, נברתי עוד קצת ומצאתי את אפשרות ההטמעה לפקודות לקומפיילר תחת properties > Actionscript Compiler. שם, אם נכניס את השורה הבאה:
allow-classpath-overlap=true-
הכל יהיה טוב והארץ תשקוט 40 שנה.
זהו, עכשיו אפשר לפנות לסוגיות קשות יותר כמו – למה, לעזאזל, אני אתחפש בפורים?

4 comments:

Le-Fay said...

הרעיון הוא למיטב הבנתי שאין צורך להגדיר ב classpath ספריה שנמצאת תחת הספריה הראשית של הפרוייקט שהרי היא כבר מוגדרת כ classpath באופן דיפולטי כומו שאומרים.

FlashMattic said...

כן... אבל אני כתבתי שאני מסודר. אני לא מעוניין שכל המחלקות שלי יתרוצצו בלי סדר על ה- root folder.

Le-Fay said...

אף אחד לא מנסה לדרדר אותך לאי-סדר חלילה.
זרוק אותן בספריה לבחירתך. אבל אם היא נמצאת תחת הספריה הראשית של הפרויקט נדמה לי שאין צורך להוסיף אותה מפורשות ל classpath.
לזה לפחות התכוונתי...

FlashMattic said...

נשמה,
נסה בעצמך - שים ספרייה כפאקג' תחת ספריית הפרוייקט הראשי. צור בה מחלקה ונסה ליצור מופע שלה בקופץ הפרוייקט הראשי. הקומפיילר לא ייתן לך עד שתגדיר classpath. וברגע שתגדיר אחד שכזה לאותה ספריה, הקומפיילר יעביר את זה אבל ייתן התרעה, בדיוק כמו שכתבתי בפוסט עצמו.
בכל מקרה, העניין נפתר.