תיקון: לא ניתן היה למצוא או לטעון מחלקה ראשית



נסה את הכלי שלנו לביטול בעיות

הטעות ' לא ניתן היה למצוא או לטעון מחלקה ראשית 'מתרחשת בעת שימוש בפקודה java בשורת הפקודה להפעלת תוכנית Java על ידי ציון שם המחלקה במסוף. הסיבה מדוע זה קורה נובעת בעיקר מטעות התכנות של המשתמש בעת הצהרת הכיתה.



לא ניתן היה למצוא או לטעון מחלקה ראשית בשורת הפקודה של Java

לא ניתן היה למצוא או לטעון שורת פקודה ראשית של Java



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



מה גורם לשגיאה 'לא הצלחנו למצוא או לטעון מחלקה ראשית' בג'אווה?

ההודעה 'לא ניתן היה למצוא או לטעון מחלקה ראשית' פירושה שהשלב הראשון של מנוע Java שמביא את הכיתה לביצוע נכשל. ה פקודת java לא היה מסוגל ל לְאַתֵר השיעור בספרייה הנכונה.

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

מהו תחביר 'ג'אווה'?

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



התחביר הרגיל של הפקודה הוא בערך כך:

ג'אווה [...] [...]

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

דוגמה לפקודה חוקית היא:

java -Xmx100m com.acme.example.ListAppuals קווין חצים ברט

הפקודה הנ'ל תגרום לפקודת java לבצע את הפעולות הבאות:

  • הוא יחפש גרסה מורכבת של הכיתה ' com.acme.example.ListAppuals '.
  • לאחר החיפוש, הוא יטען את הכיתה.
  • לאחר מכן, כאשר הכיתה נטענת, ייעשה חיפוש בכיתה אחר שיטה 'ראשית' עם חתימה חוקית, מכניסים וסוג החזרה. מחלקה ראשית לדוגמא תהיה משהו כמו:
סטטי ציבורי ריק ריק (מחרוזת [])
  • השיטה תיקרא עם טיעונים 'קווין', 'חצים' ו'ברט 'כמחרוזת [].

כיצד לתקן 'לא ניתן היה למצוא או לטעון מחלקה ראשית'

פתרון 1: בדיקת טיעון שם הכיתה

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

  • כותב שם כיתה פשוט . אם אתה מצהיר על הכיתה בחבילה כגון 'com.acme.example', עליך להשתמש ב- שם כיתה מלא כולל החבילה בפקודת Java.
java com.acme.example.ListAppuals

במקום

java ListAppuals
  • אתה צריך להכריז על שם כיתה במקום להכריז על שם קובץ או שם נתיב. Java לא מביאה את הכיתה אם אתה מצהיר שם נתיב / שם קובץ. לֹא נָכוֹן הערכים כוללים את הדברים הבאים:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • מַעֲטֶפֶת צריך להילקח בחשבון. פקודות Java רגישות לאותיות רישיות ואם אתה טועה אפילו באות אחת, לא תוכל לטעון את המחלקה הראשית. דוגמה של טעויות שגויות הם:
java com.acme.example.listappuals
  • אתה לא צריך להכריז בפני שם קובץ המקור . כמו שהוזכר קודם, עליך להכריז רק על הכיתה בפורמט הנכון של שם הכיתה. דוגמה לטעות היא:
java ListAppuals.java
  • שגיאה זו תתרחש גם אם תבצע טעות הקלדה אוֹ תשכחו לכתוב את שם הכיתה לחלוטין .

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

פתרון 2: בדיקת מסלול כיתה

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

C:> sdkTool-classpath classpath1; classpath2 ... C:> set CLASSPATH = classpath1; classpath2 ...

כדי לקבל יותר תובנה לגבי מסלול הכיתה, כדאי לבדוק את המסמכים הבאים.

תיעוד פקודות Java

קובע מסלול כיתה

פתרון 3: בודק את הספרייה

כשאתה מכריז על ספרייה כנתיב כיתה, זה תמיד יתאים לשורש מרחב השמות. לדוגמא אם '/ usr / local / acme / classes' נמצא על שביל הכיתה, ג'אווה תחפש מחלקה 'com.acme.example.Appuals'. זה יחפש כיתה עם שם הנתיב הבא:

/usr/local/acme/classes/com/acme/example/Appuals.class

אז למעשה, אם תשים את הכתובת הבאה בשביל הכיתה, ג'אווה לא תוכל למצוא את הכיתה:

/ usr / local / acme / שיעורים / com / acme / דוגמה

אתה צריך גם לבדוק את שלך ספריית משנה ולראות אם זה תואם ל- FQN. אם השיעורים FQN שלך הם 'com.acme.example.Appuals', אז Java תחפש 'Appuals.class' בספריה 'com / acme / example'.

כדי לתת לך דוגמה, נניח לתרחיש הבא:

  • הכיתה שאתה רוצה להפעיל היא: com.acme.example.Appuals
  • ה נתיב קבצים מלא הוא: /usr/local/acme/classes/com/acme/example/Appuals.class
  • ה מדריך העבודה הנוכחי הוא: / usr / local / acme / שיעורים / com / acme / דוגמה /

ואז התרחישים הבאים יתקיימו:

# שגוי, יש צורך ב- FQN java Appuals # שגוי, אין תיקיית 'com / acme / example' בספריית העבודה הנוכחית java com.acme.example.Appuals # שגוי, בדומה לתרחיש הנ'ל java -classpath. com.acme.example.Appuals # OK; מסלול כיתה יחסי מוגדר java -classpath ../../ .. com.acme.example.Appuals # OK; מסלול כיתה מוחלט מוגדר java -classpath / usr / local / acme / classes com.acme.example.Appuals

הערה: שביל הכיתה צריך לכלול גם את כל השיעורים האחרים (שאינם מערכתיים) שהיישומים שלכם זקוקים להם.

פתרון 4: בדיקת חבילת כיתה

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

4 דקות קריאה