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

.Class Dateien

Dieses Thema im Forum "macOS & OS X" wurde erstellt von iMB, 08.08.08.

  1. iMB

    iMB Jonagold

    Dabei seit:
    05.08.08
    Beiträge:
    21
    Servus zusammen,

    ich hoffe ich bin hier im richtigen Themenbereich.

    Ich habe ein Problem (welch Wunder, am dritten Tag). Und zwar hab ich hier ein class Datei die ich gern ausführen möchte. Das haut aber nicht hin.

    Hab schon was gelesen, dass das irgendwie übers Terminal gehen soll, Java -Class eingeben soll und dann die Datei dort reinlegen und Enter drücken und dann soll es funktionieren. Tut`s aber nicht.

    Ich bin verzweifelt. Bitte helft mir.

    Danke schon mal im voraus.
     
  2. YanniH

    YanniH Auralia

    Dabei seit:
    20.04.08
    Beiträge:
    202
    Normalerweise sollte es so gehen

    Code:
    java Dateiname (ohne .class-Endung)
    
    Ansonsten bitte die Ausgabe aus dem Terminal, was als Fehlermeldung ausgegeben wird.
     
  3. iMB

    iMB Jonagold

    Dabei seit:
    05.08.08
    Beiträge:
    21
    Exception in thread "main" java.lang.NoClassDefFoundError:

    dahinter steht dann noch der name
     
  4. YanniH

    YanniH Auralia

    Dabei seit:
    20.04.08
    Beiträge:
    202
    Führst du den java-befehl in demselben Pfad aus wie die Class-Datei?
     
  5. derspacy

    derspacy Gala

    Dabei seit:
    19.07.08
    Beiträge:
    50
    Die .class-Dateien sind die kompililierten Java-Klassen, die denn Java-Byte-Code enthalten, d.h. jede Klasse besitzt eine eigene .class-File.
    Also meiner Vermutung nach fehlen Dir entweder die anderen binären Klassen (falls es noch andere gibt) oder du führst das Java Programm von einem anderen Pfad aus aus, so dass die anderen Klassen nicht gefunden werden.
    Also immer erst mit "cd" in das directory der .class-Files wechseln und dann "java xxx" ausführen - und z.B. nicht folgendes machen: "java /Users/xxx/Deskop/xxx".
    Falls Dir evtl. andere .class-Files fehlen und du Zugriff auf den Sourcecode hast, kannst du sie einfach mit "javac xxx.java" kompilieren. Die Abhängigkeiten werden automatisch mitkompiliert.

    Eine andere Möglichkeit ist, dass das Programm Zugriff auf andere binäre Bibliotheken braucht und du den Pfad dieser externen Bibliotheken in die Umgebungsvariable $CLASSPATH hinzufügen musst - ohne genau Fehlermeldung aber reine Spekulation.

    Was ist es denn genau für ein Programm? Was selbt-geschriebenes? Wie lautet die genaue Fehlerausgabe?

    Gruß, spacy
     
  6. iMB

    iMB Jonagold

    Dabei seit:
    05.08.08
    Beiträge:
    21
    äh, sorry aber ich hab davon keine ahnung. ich hab das terminal geöffnet und dann gleich "java programmname" (natürlich ohne "")

    muss ich das anders machen?
     
  7. derspacy

    derspacy Gala

    Dabei seit:
    19.07.08
    Beiträge:
    50
    Stelle sicher, dass du vorher in den richtigen Ordner wechselst. Einfach mit "cd" zum Ordner, wo die .class-Files liegen navigieren - dafür kannst du auch die komfortable "Tab-Completion" nutzen. In der Bash vor dem Prompt wird der Pfad auch angezeigt.

    Also, folgendes geht dann nicht - wenn man bspw. davon ausgeht, dass sich "Wurst.class" unter /Applications befindet:
    Code:
    foobook:~ spacy$ java Wurst
    Exception in thread "main" java.lang.NoClassDefFoundError: Wurst
    (~ steht dabei für dein Home-Verzeichnis)

    Richtig:
    Code:
    foobook:~ spacy$ cd /Applications
    foobook:Applications spacy$ java Wurst
    Achja: Häufig sind die ganzen .class-Files (= das gesamte Java-Programm) in einer JAR-File gepackt, was im Prinzip nur eine Zip-File mit zusätzlichen Meta-Informationen ist (z.B. welche Methode welcher Klasse zum Starten benutzt werden soll). So ist das ganze etwas übersichtlicher.
    Eine Jar-File startest du z.B. mit "java -jar Wurst.jar". Oder einfach Doppelklick im Finder ;)
     
  8. iMB

    iMB Jonagold

    Dabei seit:
    05.08.08
    Beiträge:
    21
    Danke nochmal für eure Antworten. Ich hab mir jetzt anders beholfen, werd das aber nochmal probieren wie derspacy das gesagt hat.

    So long
     

Diese Seite empfehlen