Set Classpath

Diskutiere das Thema Set Classpath im Forum Mac OS Entwickler, Programmierer

Schlagworte:
  1. barb0308

    barb0308 Thread Starter MacUser Mitglied

    Beiträge:
    3
    Zustimmungen:
    0
    Mitglied seit:
    01.10.2018
    Hallo zusammen,

    mir ist bewusst, dass eine ähnliche Frage schon gestellt wurde, aber mit der gegebenen Lösung konnte ich nicht arbeiten. Ich arbeite zum ersten Mal mit Java.
    Leider bekomme ich folgende Fehlermeldung, wenn ich meine Datei ausführen lassen möchte.
    java.lang.ClassNotFoundExcdption:Hamster
    in jdk.internal.loader.BuiltinClassLoader.loadClass (Reihe -1)
    in jdk.internal.loader.ClassLoaders$appClassLoader.loadClass (Reihe -1)
    in java.lang.ClassLoader.loadClass (Reihe -2)
    in java.lang.Class.forName0 (Reihe -2)
    in java.lang.Class.forName (Reihe -1)

    Datei befindet sich in diesem folder:
    /desktop/hamster/Hamster.java

    Die export CLASSPATH=$CLASSPATH: Funktion und viele andere Vorgehensweisen habe ich probiert und trotzdem bekomme ich immer wieder die obige Fehlmeldung.

    Ich arbeite mit macOS High Sierra 10.13.3
    Kann mir bitte jemand weiterhelfen?
    Danke und VG
     
  2. Madcat

    Madcat Mitglied

    Beiträge:
    12.540
    Medien:
    4
    Zustimmungen:
    1.727
    Mitglied seit:
    01.02.2004
    Da stimmt offenbar der Pfad zur Klasse nicht. Wie hast du den Pfad denn genau angegeben? Wo liegt das Programm und kann es von da aus mit dem konkreten Pfad da auch hin finden?

    Beispiel:

    Programm liegt auf dem Desktop.
    Pfadname zur Klasse lautet /desktop/myClass/
    Klasse liegt tatsächlich in: /user/myUserName/Desktop/myClass/

    Ergebnis: Programm findet die Klasse nicht da es vom Desktop aus den Ordner sucht, in dem es schon liegt.
    Lösung: Absoluten Pfadnamen für die Klasse angeben.

    Was gerne übersehen wird ist das "~" Zeichen, dass vom System zum Userordner aufgelöst wird, typische Pfadnamen können lauten "~/desktop/myClass/", für das "~" wird das System bei der Ausführung "/user/myUserName" eintragen sodass sich als Pfadangabe "/users/myUserName/desktop/myClass/" ergeben wird.

    Von Java hab ich sonst wenig bis keine Ahnung, tippe aber auf einen fehlerhaften Pfadnamen.
     
  3. barb0308

    barb0308 Thread Starter MacUser Mitglied

    Beiträge:
    3
    Zustimmungen:
    0
    Mitglied seit:
    01.10.2018
    Hallo,

    danke für deine Antwort.
    Folgende Befehl gebe ich im Terminal ein:
    export CLASSPATH=$CLASSPATH:"/Users/barbarahinrichs/desktop/hamster"

    Jedoch geschieht nichts. Ich bekomme immer die gleiche Fehlermeldung.

    Wenn ich echo $CLASSPATH eingebe, wird mir nichts angezeigt.
     
  4. ruerueka

    ruerueka Mitglied

    Beiträge:
    1.162
    Zustimmungen:
    112
    Mitglied seit:
    04.04.2004
    Ich glaube, dass du an der falschen Stelle suchst...
    Du brauchst den Classpath nur, um externe Bibliotheken zu laden, für deine Klassen in deinem Projetk genügt es, den Einstiegspunkt richtig zu setzen.
    Also:
    du öffnest das Terminal und wechselst auf den Desktop
    Code:
    cd ~/Desktop
    dann rufst du deine Java-Klasse mit der main-Methode auf. Da diese in einem Unterordner liegt, gibst du das mit an.
    (Damit das klappt, muss der Ordner als package-Deklaration in der Klasse angegeben sein).
    Bei mir sieht das so aus (alles im Terminal, und von Anfang an...):

    1) Java-Datei (das Programm) schreiben, ich nehme dafür nano, es geht aber jeder Editor, der Plain Text kann:
    Code:
    xx@~$ nano hamster/Hamster.java
    Code:
    package  hamster;
    class Hamster{
            public static void main(String[] args){
                    System.out.println("Hamster :-)");
            }
    }
    
    2) Klasse kompilieren (ausführbaren Bytecode erzeugen):
    Code:
    xx@~$ javac hamster/Hamster.java
    
    Es wir eine Datei hamster/Hamster.class erzeugt
    3) und ausführen (die zweite Zeile enthält bereits die Programmausgabe):
    Code:
    xx@~$ java hamster/Hamster
    Hamster :-)
    
    Eigentlich einfach, wenn man sich daran gewöhnt
    - Pakete = Ordner im Dateisystem
    - immer "oben" einsteigen, also kompilieren und aufrufen immer von dem Punkt aus, ab dem der Paketpfad losgeht und dabei den Paketpfad mit angeben
    - Beim Kompilieren musst du den vollen Dateinamen angeben (mit Endung .java)
    - Beim Ausführen wird die Dateiendung ".class" NICHT mit angegeben.

    Für aufwändigere Strukturen verwendet man dann ein build-Werzeug zum kompilieren und testen (Apache Ant z.B.) oder eine IDE (Netbeans), die das build-Tool schon mitbringt. Ich finde es aber richtig, im Terminal anzufangen, damit man gleich von Anfang an über die grundlegenden Konzepte stolpert und sie darum auch versteht :)
    Viel Spass beim Programmieren!
     
  5. barb0308

    barb0308 Thread Starter MacUser Mitglied

    Beiträge:
    3
    Zustimmungen:
    0
    Mitglied seit:
    01.10.2018
    Hat geklappt. Vielen Dank für die ausführliche Erklärung!
     
Die Seite wird geladen...

MacUser.de weiterempfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...