Kompilieren geht nicht

Also ich habe eine Klasse:


import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;

public class ErrateZahl {

    public static void main(final String[] args) {
        final Random r = new Random();
        final int randomInt = r.nextInt(100) + 1;
        int anzahlVersuche = 0;

        System.out.println("Erraten Sie die Zahl zwischen 1 und 100:");

        int eingabezahl = 0;
        try (final Scanner sc = new Scanner(System.in)) {

            do {
                ++anzahlVersuche;
                try {
                    eingabezahl = sc.nextInt();
                    if (eingabezahl <= 0) {
                        throw new OnlyPositiveNumbersAllowedException("Nur Positive Zahlen sind erlaubt!");
                    } else if (eingabezahl < randomInt) {
                        System.out.println("Meine Zahl ist groesser!");
                    } else if (eingabezahl > randomInt) {
                        System.out.println("Meine Zahl ist kleiner!");
                    }
                } catch (InputMismatchException ex) {
                    System.err.println("Ungültige Eingabe, bitte geben Sie eine ganze Zahl ein!");
                    sc.next();
                } catch (OnlyPositiveNumbersAllowedException ex) {
                    System.err.println(ex.getMessage());
                    sc.next();
                }
            } while (eingabezahl != randomInt);

        }
        System.out.println("Glückwunsch, Sie haben die Zahl erraten!!! "
                + "Sie haben nur " + anzahlVersuche + " Versuche gebraucht!");
    }
}```
Die funktioniert auch wenn ich sie über Netbeans ausführe, so wie sie soll. Wenn ich allerdings versuche, sie über die Kommandozeile zu kompilieren, schmeißt er mir nur das entgegen:

> ErrateZahl.java:24: error: cannot find symbol
>                         throw new OnlyPositiveNumbersAllowedException("Nur Posit
> ive Zahlen sind erlaubt!");
>                                   ^
>   symbol:   class OnlyPositiveNumbersAllowedException
>   location: class ErrateZahl
> ErrateZahl.java:33: error: cannot find symbol
>                 } catch (OnlyPositiveNumbersAllowedException ex) {
>                          ^
>   symbol:   class OnlyPositiveNumbersAllowedException
>   location: class ErrateZahl
> 2 errors


Aber warum? Die Exception ist im gleichen Package wie die Klasse und über netbeans funzt es auch... Was mach ich falsch?^^

Wie kompilierst Du von der Console aus? Wie ist der Classpath gesetzt?

Ich navigiere zum Ordner, in dem die .java liegt und mach dann “javac ErrateZahl.java”. Wenn ich aber die Klasse z.B. mit einer anderen austausche, funzt es ja auch. Die Exception liegt im .class und .java Format vor, falls das wichtig is.

du musst vom Grundverzeichnis X, dem Verzeichnis über ‘Tests’, aus kompilieren, die Datei dann mit Verzeichnis angeben,
nur so kann Java eine Grundvorstellung haben und andere Klassen finden,

alternativ muss man den ClassPath genauer spezifizieren,
von beliebigen Ort kompilieren aber sagen dass X in den ClassPath gehört, dort nach Klassen nachgeschaut wird

packages übrigens generell besser klein schreiben, zur Unterscheidung von Klassen,
aber dann auch genau darauf achten dass die Unterverzeichnisse konsistent dazu benannt sind,
für aktuell wohl besser nichts ändern, nur allgemein bedenken und evtl. übernehmen

Wenn ich das erste mache, findet er die Klasse nicht mehr

javac: file not found: Tests.ErrateZahl.java
Usage: javac
use -help for a list of possible options

Kommando war “javac Tests.ErrateZahl.java”, bei “Tests\ErrateZahl.java” kommts gleiche.

Welches OS verwendest Du? Unter Windows müsste es javac Tests\ErrateZahl.java sein; ausgeführt werden muss das in dem Verzeichnis, in dem das Unterverzeichnis Tests liegt (in dem dann wiederum die Java-Source liegen sollten)

der erste Backslash hats versaut, danke hat geklappt