-
שלום, אני יודע שזה דרישה קצת גדולה מידי...
החלטתי ללמוד ג'אווה, כדי לבנות (ולערוך:) יישומים לC2 (מקווה שזה לא נוגד את חוקי הפורום...)
לקחתי איזה יישום שעושה מסך לבן, פנס, פרקתי אותו, ושיחקתי קצת, בקימפול ה javac עושה לי errors ואני לא מצליח להבין איפה הטעויות, אשמח להחכים!!זה אחד מהקבצים, אני מצרף את הקוד ומיד אח"כ את הפלט של הקומפיילר
package se.light; import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import se.light.Light.1; public class Light extends MIDlet { private Display display; private WhiteCanvas canvas = new WhiteCanvas(this); public Light() { (new 1(this)).start(); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { this.display = Display.getDisplay(this); this.display.setCurrent(this.canvas); } public void exitMidlet() { try { this.destroyApp(true); } catch (MIDletStateChangeException var2) { } this.notifyDestroyed(); } }
וזה הפלט של הקומפיילר (כל השגיאות בשורה ה13, כמעט, חוץ מהראשונה)
Light.java:6: error: ';' expected import se.light.Light.1; ^ Light.java:13: error: <identifier> expected (new 1(this)).start(); ^ Light.java:13: error: '(' or '[' expected (new 1(this)).start(); ^ Light.java:13: error: not a statement (new 1(this)).start(); ^ Light.java:13: error: not a statement (new 1(this)).start(); ^ Light.java:13: error: ';' expected (new 1(this)).start(); ^ 6 errors
יצויין שאינני מעוניין שתפתרו לי את הבעיות לבד, אלא שתלמדו אותי מהם, ואיך למצוא אותם בעצמי...
Thank you very much.
-
@מוטי-מן זה קוד שהתקבל על ידי דה-קומפילציה של התוכנה, נכון?
על פי מה שאני יודע, הדיקומפיילר נותן את השם 1 באופן שרירותי למחלקה, וייתכן שהקובץ המכיל את קוד המחלקה הוא עם שם שונה. תבדוק כמה קבצים נוצרו על ידי הדיקומפיילר ואם קיים שם קובץ בשם "1". -
@מוטי-מן הקובץ Light$1 נוצר כדי לייצג מחלקה אנונימית שהייתה בקוד המקורי. הדיקומפיילר קרא למחלקה בשם השרירותי הזה. השגיאה היא בשורה:
import se.light.Light.1;
אני לא מבין בג'אווה אבל האינטואיציה שלי אומרת שהפתרון יכול להיות אחת מהאפשרויות:
א. לשנות את השם של הקובץ והמחלקה שהוא מכיל לשם אחר.
ב. לשלב את הקוד מהקובץ Light$1 בתוך הקובץ הראשי ולוותר על הייבוא.
ג. אולי לייבא כך:import se.light.Light$1;
אם שום דבר לא עוזר אולי תשתף כאן את התוכן של Light$1
-