תוכנית ב-Java

ShimiHi

New member
תוכנית ב-Java

הי,
כתבתי תוכנית בסיסית בג'אווה
(מתרגל קוד בסיסי, קולט מידע מהמשתמש ושולח פלט של חישוב בסיסי)
מתקמפלת ב-NetBeans
כשאני מריץ אותה, כלום לא קורה.
חיפשתי ברשת אבל לא הבנתי איפה הבעיה :)
כשאני מריץ ע"י פקודה ב-CMD
java code.java

אני מקבל הודעה:
Error: Could not find or load main class
איפה הטעות שלי?
 

selalerer

New member
נתחיל בבסיס:

javac זה הפקודה לקימפול Java. זה מקבל כקלט קובץ עם סיומת java והופך אותו לקובץ עם סיומת class.
&nbsp
java זו הפקודה שמריצה תוכניות Java. בצורה הבסיסית שלה היא מקבלת את השם של ה-class להריץ.
&nbsp
פה אתה נתת ל-java כפרמטר את הקובץ עם הסיומת java ולא את שם ה-class וגם לא נראה שלפני זה קימפלת את הקובץ עם סיומת java לקובץ עם סיומת class.
 

ShimiHi

New member
צודק

אחרי שאני מקמפל ע"י הפקודה:
javac c:\path\code.java
וקובץ code.class נוצר

אני מריץ java c:\path\code.class
ועדיין מקבל את ההודעה:
Error: Could not find or load main class
מה הקטע?
 

ShimiHi

New member
זה הקוד: שם הקובץ tester.java ושם הקימפול tester.class

import java.util.Scanner;
public class tester {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int width, height, area, peri;
System.out.println("Enter width:");
width = scan.nextInt();
System.out.println("Enter height:");
height = scan.nextInt();
area = width*height;
peri = area*2;
System.out.println("Area: " + area + "Perimeter: " + peri);

}


}
 

BravoMan

Active member
הבעיה שלך זה הנתיב.

תכנס לספרייה בה נמצא הקובץ, ותריץ בלי כל ה-c:\path
Java משתמשת בספריות כדי להפריד רכיבים של package name (משהו שכנראה עוד לא למדת עליו).
לכן, ברגע שאתה מנסה להריץ מחלקה עם נתיב ספריות, הוא מצפה להכרזה package בראש הקוד.
&nbsp
כאמור, זה נושא קצת מתקדם של חלוקת תוכנית לרכיבים.
 

ShimiHi

New member
תודה רבה

לא ידעתי שאם יש כמה classes ושאם חלק מהם לא מתקמפלים,
(היו סימני קריאה עליהם ב-NetBeans)
זה משפיע על הריצה, עשיתי ניקוי של כל מה שלא עובד.
ועכשיו התוכנית רצה, תודה :)
 
למעלה