voguemaster
New member
בעית "LINKAGE" חמורה בג'אווה
יש לי בעיה כזו: יש לי אפליקציה שמורכבת מכמה מחלקות. אחת המחלקות היא מחלקת עזר כללית שרוב המחלקות האחרות משתמשות בה. אף אחד לא יורש ממחלקת העזר הזו ובאופן כללי היא לא משתנה בהרבה. בעידכון הלפני אחרון שעשיתי, עדכנתי שלוש מחלקות, אחת מהן היא מחלקת העזר (שלהזכירכם כולם משתמשים בה). פתאום התחלתי לקבל NoSuchMethodException באיזשהו מקום אחר לגמרי בקוד, בקריאה לפונקציה (שקיימת!). הדבר היחיד שיכלתי לחשוב עליו הוא שבגלל שהוספתי פונקציה למחלקת העזר שלי, דפקתי איכשהו את תהליך ה"קישור" שה-JVM עושה בזמן שהוא טוען את המחלקות. מה שעשיתי זה לעדכן את *כל* המחלקות וראיתי שהכל תקין. בעידכון הבא שעשיתי, עידכנתי רק את מחלקת העזר. השינוי היה מינורי - שיניתי בסה"כ מחרוזת אחת (היא מאותחלת במשהו קצת אחר עכשיו). קיבלתי NullPointerException במקום אחר ולא קשור לקוד הזה בכלל, כשמריצים את האפליקציה. אני יודע שיש חתימות לפונקציות בכל מחלקה וה-JVM בזמן טעינה אמור לבצע קישור כמו שצריך. כנראה שיש מקרים שבהם זה לא קורה ואני רוצה לגלות אותם. באופן עקרוני אמורה להיות אפשרות לעדכן קובץ או כמה קובצי class בלי לשבור את ההתנהגות של התוכנה לגמרי, לא ? מישהו מכיר מקרים של שבירת התנהגות כזו ? נדמה לי שראיתי פעם באיזה mailing list על הנושא הזה אבל אני לא זוכר איפה. מה שהכי מוזר זה שעשיתי עדכונים ספציפיים כאלה כבר פעם והכל עבד. מה גם שזה עובד על תחנה אחרת. אם יש באג, אני רוצה למצוא אותו אבל שינוי שעשיתי משפיע על קוד שלא קשור בכלל! אין לי מושג מה קורה
יש לי בעיה כזו: יש לי אפליקציה שמורכבת מכמה מחלקות. אחת המחלקות היא מחלקת עזר כללית שרוב המחלקות האחרות משתמשות בה. אף אחד לא יורש ממחלקת העזר הזו ובאופן כללי היא לא משתנה בהרבה. בעידכון הלפני אחרון שעשיתי, עדכנתי שלוש מחלקות, אחת מהן היא מחלקת העזר (שלהזכירכם כולם משתמשים בה). פתאום התחלתי לקבל NoSuchMethodException באיזשהו מקום אחר לגמרי בקוד, בקריאה לפונקציה (שקיימת!). הדבר היחיד שיכלתי לחשוב עליו הוא שבגלל שהוספתי פונקציה למחלקת העזר שלי, דפקתי איכשהו את תהליך ה"קישור" שה-JVM עושה בזמן שהוא טוען את המחלקות. מה שעשיתי זה לעדכן את *כל* המחלקות וראיתי שהכל תקין. בעידכון הבא שעשיתי, עידכנתי רק את מחלקת העזר. השינוי היה מינורי - שיניתי בסה"כ מחרוזת אחת (היא מאותחלת במשהו קצת אחר עכשיו). קיבלתי NullPointerException במקום אחר ולא קשור לקוד הזה בכלל, כשמריצים את האפליקציה. אני יודע שיש חתימות לפונקציות בכל מחלקה וה-JVM בזמן טעינה אמור לבצע קישור כמו שצריך. כנראה שיש מקרים שבהם זה לא קורה ואני רוצה לגלות אותם. באופן עקרוני אמורה להיות אפשרות לעדכן קובץ או כמה קובצי class בלי לשבור את ההתנהגות של התוכנה לגמרי, לא ? מישהו מכיר מקרים של שבירת התנהגות כזו ? נדמה לי שראיתי פעם באיזה mailing list על הנושא הזה אבל אני לא זוכר איפה. מה שהכי מוזר זה שעשיתי עדכונים ספציפיים כאלה כבר פעם והכל עבד. מה גם שזה עובד על תחנה אחרת. אם יש באג, אני רוצה למצוא אותו אבל שינוי שעשיתי משפיע על קוד שלא קשור בכלל! אין לי מושג מה קורה