לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 20-12-2007, 19:01
צלמית המשתמש של SAAM007
  SAAM007 SAAM007 אינו מחובר  
 
חבר מתאריך: 27.12.06
הודעות: 281
JAVA - ClassLoader

שלום,
אני עובד על Java Applet שמקבל כפרמטר איזה משחק לטעון.
הApplet יטען את משחק המתאים (לפי הפרמטר) ויציג אותו.
(לא ממש ברור אני יודע).

בגדול: נגיד שיש לי 2 משחקים.

Checkers / SudokuSr
הראשון Checkers:
ה JPanel נקרא JPCheckers
נמצא ב Checkers.jar
בחבילה SAAMs.Games.Checkers

השני SudokuSr:
ה- JPanel נקרא JPSudokuSr
נמצאב SudokuSr.jar
בחבילה SAAMs.Games.SudokuSr

החלק השלישי היינו AptLoader:
שהוא JApplet שנקרא AptLoader
נמצא ב AptLoader.jar
ללא חבילה (default package)
(בתוך קובץ jar זה יש עוד מספר חבילות ש AptLoader משתמש וכל שאר המשחקים משתמשים).

AptLoader יקבל את שם המשחק שצריך להריץ והוא יטען את jar ויריץ את המשחק.
לדוגמא אם הוא יקבל Checkers הוא יטען את:
Checkers.jar
ויריץ משם את
SAAMs.Games.Checkers.JPCheckers

עד עכשיו הצלחתי לגרום לזה לעבור אם שמתי את כל החבילות באותו jar.
אבל השאלה איך אני יכול להפריד אותם ל 3 jars ולגרום ל AptLoader לטעון את ה jar הנכון ? (ושזה באמת יעבוד).



זה הגירסה הבסיסית של הקוד שכתבתי עד עכשיו (ללא תצוגת התקדמות וכו'):
אבל זה עובד כל עוד כל החבילות באותו Jar






קוד:
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JLabel;
public class AptLoader extends JApplet {
public void init() {
this.add(new JLabel("Loading..."));
final String loadClass=this.getParameter("loadClass");
//"SAAMs.Games.Checkers.JPCheckers";
Thread loadThread=new Thread() {
public void run() {
Object myGame;
try {
Class<?> myClass = Class.forName(loadClass);
myGame=myClass.newInstance();
} catch(Exception e) {
System.err.println("ERROR: Couldn't load given class ("+loadClass+")...");
return;
}
if(!(myGame instanceof JPanel)) {
System.err.println("ERROR: "+myGame.getClass().getName()+" isn't instance of JPanel...");
return;
}
setContentPane((JPanel)myGame);
validate();
}
};
loadThread.start();
}
}

אני יודע שאיך שהוא צריך להשתמש ב URLClassLoader

אבל אין לי ממש הצלחה ואני לא בטוח שבכלל אפשר עם Applet (בגלל הרשאות)
(אבל גם אני צריך לדעת עם Application כי אחרי זה אני רוצה לעשות אפליקציה גדולה ושיהיה אפשר לפתוח כל משחק ב Internal Frames וכו')
השמח לדחיפה בכיוון הנכון לפתרון הבעיה הזה.
תודה

נערך לאחרונה ע"י SAAM007 בתאריך 20-12-2007 בשעה 19:06.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 15:09

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2026 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר