Hallo leute im compiler zeigt er mir an "could not find or load main class"
schaut euch mal den code an eigentlich sollte alles laufen.
Code:
class Isprim
{
public static void main( String [] args)
{
int a = Integer.parseInt(args[0]);
int k= 0;
// algo
for(int i= 1; i<a; i++)
{
if ( a%k==0) k++;
}
if ( k ==2) System.out.println("ist ne primzahl");
else System.out.println("ist keine Primzahl");
}
}
also er zeigt bei publis static void main einen fehler an
Also im code sehe ich erst einmal keinen Compile-Fehler. Die Frage ist also das genaue Handling. Wenn keine IDE benutzt wird und das die ganze Datei war (keine Zeile mit package dabei), dann ist der Compiler Aufruf per
javac isprim.java
möglich.
Der Aufruf selbst wäre dann
java Isprim 5
Hier ist wichtig:
a) kein .java
b) Groß- / Kleinschreibung!
Was aber auffällt sind Logik-Fehler.
a) die % operation ist falsch. Da willst Du eher ein %i statt %k rechnen.
b) die Überprüfung ist falsch. Eine Primzahl ist eine Zahl, die durch 1 und sich selbst teilbar ist. Da wäre k==2 prinzipiell richtig. Aber da Du den Test, ob die Zahl durch sich selbst teilbar ist, nicht durchführst, wird k bei Primzahlen nur 1 sein.
Das Leerzeichen ist kein Fehler. In der zweiten Zeile sollte ein Leerzeichen sein. Habe meinen Beitrag noch einmal editieren und das Leerzeichen einfügen können.
Danke für eure antworten, an dem leerzeichen lag es nicht, danke für die logik berechtigung. Ich habe wohl selbst etwas falache informationen weitergegeben. Er kann das programm schon compiliere(javac)
aber beim aufruf mit java Isprim zeigt er mir an er kann die hauptklasse nicht finden
Evtl. ist es ein Problem mit dem classpath, dass das aktuelle Verzeichnis nicht Bestandteil des classpaths bei dir ist.
So Du "javac isprim.java" und "java Isprim" aufrufst un du im aktuellen Verzeichns eine Datei Isprim.class erhalten hast, dann solltest Du einmal ausprobieren:
java -cp . Isprim
Ich weis nicht wieso aber bei dem programm läufts auf einmal. Aber bei einer anderen Datei kommt der selbe fehler. Könnte vll echt was mit dem classpath zusammenhängen aber damit kann ich noch nciht soviel anfangen. Die dateien sind alle in einem ordner.
Das ist die Datei:
scheint iwie allgemein zu sein oda so
Java:
class schleifen
{publicstaticvoidmain(String[] args){// alle zahlen die durch 3 teilbar sind zwischen 10 und 40for(int i=10;i <=40;i++){if( i %3==0)System.out.print(i+" ");}}}
Im anhang der cmd
hoffe ihr könnt was damit anfangen ich hab kein plan was er will
Entgegen meiner ersten Aussage: Die main Methode muss tatsächlich public sein.
Jetzt wunder ich mich nur, wie ich darauf gekommen bin, dass dies nicht der Fall sein muss. Evtl. war es in C# anders. Aber egal. In Java muss die main Methode tatsächlich public sein sonst kann die Methode nicht gefunden werden. (Eben vorsichtshalber einmal ausprobiert)
ok auf einmal läuft die schleifen datei auch.. seltsam das einzige was passiert ist ich hab neugestartet. checkt einer wieso die dateien plötzlich gehen? wär nützlich zu wissen ansonsten kann man den post denke ich schliesen
Nein, dein Problem war die Groß / Kleinschreibung.
Das hier funktioniert beides:
javac schleifen.java
javac Schleifen.java
Warum? Weil du direkt auf die Datei zugreifst, DOS/WINDOWS unterscheidet nicht zwischen Groß- und Kleinschreibung. javac untersucht die .java-Dateien und kompiliert den darin enthaltenen Text.
Grund: Es existiert keine Klasse namens "Schleifen"
"java Schleifen" ruft NICHT die Datei Schleifen.java auf.
"java Schleifen" sagt dem Classloader "Finde doch bitte mal die Klasse 'Schleifen'"
Der Classloader in der Standard-Implementierung geht dann mal davon aus, dass die Klasse "Schleifen" in der Datei Schleifen.class gespeichert ist. Die Datei findet er, allerdings sucht er IN der Datei nach "Schleifen" und nach nichts anderem und diese Klasse existiert eben nicht. Die dort gespeicherter Klasse heißt "schleifen"
Bei der Ausführung eines Java-Programms musst du unterscheiden zwischen Klassen und Dateien. Der Class-Loader lässt sich nämlich auch ersetzen, du könntest einen eigenen verwenden, der die Klassen in völlig unterschiedlichen Dateien sucht.