תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    ג'אווה... התחביר נכון?

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

      שלום, אני יודע שזה דרישה קצת גדולה מידי...
      החלטתי ללמוד ג'אווה, כדי לבנות (ולערוך:) יישומים ל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.

      OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • OdedDvir
        OdedDvir @מוטי מן נערך לאחרונה על ידי OdedDvir

        @מוטי-מן זה קוד שהתקבל על ידי דה-קומפילציה של התוכנה, נכון?
        על פי מה שאני יודע, הדיקומפיילר נותן את השם 1 באופן שרירותי למחלקה, וייתכן שהקובץ המכיל את קוד המחלקה הוא עם שם שונה. תבדוק כמה קבצים נוצרו על ידי הדיקומפיילר ואם קיים שם קובץ בשם "1".

        מוטי מן תגובה 1 תגובה אחרונה תגובה ציטוט 5
        • מוטי מן
          מוטי מן @OdedDvir נערך לאחרונה על ידי

          @OdedDvir זה הקבצים שיש, 3 סה"כ.
          30ce87e5-9fe0-43dc-a195-afc4eb2fbc92-image.png

          OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • OdedDvir
            OdedDvir @מוטי מן נערך לאחרונה על ידי OdedDvir

            @מוטי-מן הקובץ Light$1 נוצר כדי לייצג מחלקה אנונימית שהייתה בקוד המקורי. הדיקומפיילר קרא למחלקה בשם השרירותי הזה. השגיאה היא בשורה:

            import se.light.Light.1;
            

            אני לא מבין בג'אווה אבל האינטואיציה שלי אומרת שהפתרון יכול להיות אחת מהאפשרויות:
            א. לשנות את השם של הקובץ והמחלקה שהוא מכיל לשם אחר.
            ב. לשלב את הקוד מהקובץ Light$1 בתוך הקובץ הראשי ולוותר על הייבוא.
            ג. אולי לייבא כך:

            import se.light.Light$1;
            

            אם שום דבר לא עוזר אולי תשתף כאן את התוכן של Light$1

            תגובה 1 תגובה אחרונה תגובה ציטוט 6
            • ח
              חוקר נערך לאחרונה על ידי

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

              תגובה 1 תגובה אחרונה תגובה ציטוט 4
              • הועבר מ תכנות ע"י  dovid dovid 
              • 1 / 1
              • פוסט ראשון
                פוסט אחרון
              בא תתחבר לדף היומי!