Hauptklasse konnte nicht gefunden werden

Exodevil

Mitglied
Hallo,

ich programmiere seit einiger Zeit in Java und habe immer Eclipse verwendet. Jetzt bin ich allerdings so weit, dass ich meine Programme gerne auch mal über ein batchfile oder manuell im cmd ausführen lassen will.

Nun zu meinem Problem
Das Compilieren über javac Encrypt.java funktioniert einwandfrei.
Die class-Datei wird auch erstellt. Wenn ich jetzt allerdings mit java Encrypt versuche das Programm zu starten, kommt die Fehlermeldung "Fehler: Hauptklasse Encrypt konnte nicht gefunden oder geladen werden"

Ich hab auch schon einige Foren durchsucht, aber nichts konnte mir wirklich weiterhelfen. Meine main-Methode stimmt, meine Path-Variable meines Wissens auch.

Hier noch der Code vom Programm:
Java:
package passwort;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Encrypt {
    public static void main(String[] args) {
        String passwort = "abcdefg";
     
        try {
            String hash = toHash(passwort);
            System.out.println(hash);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
 
    private static String toHash(String password) throws NoSuchAlgorithmException{
        MessageDigest digest = MessageDigest.getInstance("SHA-1");
        digest.update(password.getBytes());
     
        byte[] bytes = digest.digest();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < bytes.length; i++) {
            sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
        }     
        return sb.toString();
    }
}

Hat da jemand eine Lösung dafür?
 
Zuletzt bearbeitet von einem Moderator:
dann startest du es vermutlich aus dem falschen Ordner.
Angenommen du hast diesen Pfad:
MeinPfad/passwort/Encrypt.class
der java Aufruf erfolgt aus dem Wurzelverzeichnis, in deinem Falls also aus dem "MeinPfad" Verzeichnis
 
Wieso geht dann javac aus dem passwort-Verzeichnis aber java nicht? Nur so für mein Verständnis
javac möchte einen Dateinamen. Diesen kannst Du relativ zu dem aktuellen Pfad angeben.

java will einen Klassennamen. Und der wird dann über den Classloader gesucht. Dabei ist dann das Verzeichns, von dem aus gesucht wird - so man es nicht anders spezifiziert - das aktuelle Verzeichnis.
 

Zurück
Oben