Frage von JustinMarc, 35

Wieso funktioniert das Programm nicht?

Ich habe mit Eclipse ein Programm geschrieben.

package Package; import java.io.*;

    public class ThefirstClass 
{

    public static void main(String[] args) throws IOException
{
    //int zahl = 0;
    
    System.out.println("Nenne mir eine Zahl zwischen 1 und 10");
    
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    String zahl = input.readLine();
    
    if(Integer.parseInt(zahl) == 6)
{
    System.out.println("Richtige Zahl");
}
    else 
{   
    System.out.println("Falsche Zahl");
}

}
}

Dies Funktioniert auch sehr gut doch wenn ich es in einem Editor speicher und mit javac ThefirstClass.java zu einer .class Datei mache und es dann über das Terminal mit java ThefirstClass öffnen möchte kommt das: justin-marc@Praktikums-Rechner:~/Dokumente$ java ThefirstClass Exception in thread "main" java.lang.NoClassDefFoundError: ThefirstClass (wrong name: Package/ThefirstClass) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

Antwort
von daCypher, 34

Ich bin mir nicht 100%ig sicher, aber ich glaube dass eine Klasse auch immer einen Konstruktor braucht. Also mach einfach mal folgende Funktion in deine Klasse rein:

public ThefirstClass()
{

}
Kommentar von bormolino ,

Wenn der Konstruktor nicht angegeben wird, wird ein Standard-Konstruktor von Java hinzugefügt.

Kommentar von KnusperPudding ,

Eine Klasse muss nicht zwingend einen Konstruktor implementieren.

Ist keiner explizit angegeben so ist dennoch der Konstruktor:

new ThefirstClass();


aufrufbar um eine Instanz zu bilden.

Antwort
von xSh4kerx, 20

Packages sollten nie Großbuchstaben vorne besitzen. Außerdem hast du int zahl = 0 auskommentiert (sofern das jetzt nicht wegen der Frage und dem Kopieren des Codes nötig war), weshalb das Programm sowieso nicht laufen würde.

Kommentar von bormolino ,

Außerdem hast du int zahl = 0 auskommentiert [...] weshalb das Programm sowieso nicht laufen würde.

Doch, die Variable wird neu angelegt.

String zahl = input.readLine();
Antwort
von bormolino, 35

Lass entweder diese Zeile weg:

package Package;

oder packe die Datei in den Ordner "Package" und compiliere mit Angabe des Pfades.

Kommentar von JustinMarc ,

Ist die Zeile denn nicht Wichtig?

Kommentar von bormolino ,

Du musst aus dem Package Ordner heraus.

Und dann:

javac Package/ThefirstClass.java

java Package/ThefirstClass
Kommentar von JustinMarc ,

Ich bin mit dem Terminal im Dokumente Ordner da wo meine Datei Gespeichert ist das Funktioniert allerdings trotzdem nicht wenn ich das mit den befehlen mach die du mit geschrieben hast

Kommentar von bormolino ,

Wenn du im Package bist ist das klar. Deswegen: lies das Kapitel zu Packages ... dann wirst du deinen Fehler erkennen.

Die Java-Datei hat im Ordner "Package" zu liegen und wird von außerhalb compiliert.

Kommentar von bormolino ,

Du hast scheinbar das Prinzip der Packages nicht verstanden.

http://michael.hahsler.net/JAVA/pdf/05_1Packages.pdf

Kommentar von JustinMarc ,

Ok habe gelesen und bearbeitet funktioniert jetzt also danke für die hilfreiche Antwort

Kommentar von bormolino ,

Freut mich, dass es jetzt geht.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten