Sensei: Bin Anfänger :( und kann programm nicht ausführen :((

Grüß euch!

Bin absoluter Java anfänger und kann ein einfaches Programm (mit Euklid-Algorithmus) nicht ausführen. Kompilieren hat geklappt...!

Bekomme in dos stets die Fehlermeldung:
_____________________________________________________________________

D:\ToPr>java -cp . Euklid
Exception in thread "main" java.lang.NoClassDefFoundError: eprog/EprogIO
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
_____________________________________________________________________

Bitte helfts mir, weiß nicht, was ich tun soll,
ciao, Tobias

  1. Grüß euch!

    Bin absoluter Java anfänger

    Wieso gibst du dann in einem Posting weiter unten im Forum eine
    Antwort, wenn du dasselbe (bzw. ein ähnlich gelagertes Problem) selbst
    nicht in den Griff kriegst?

    D:\ToPr>java -cp . Euklid
    Exception in thread "main" java.lang.NoClassDefFoundError: eprog/EprogIO

    Was ist eprog/EprogIO? Wo kommt das her? Wo liegen die Dateien?
    Hast du die Dateien (wie im genannten Posting angedroht) in dieses ext-
    Verzeichnis kopiert? Laß das besser bleiben. Binde externe JAR-Files
    über den Classpath ein (bzw. konfiguriere deine IDE so, daß sie das
    für dich tut).

    Was hat dieses komische "-cp ." bei deinem Aufruf zu suchen? Java
    schließt das aktuelle Verzeichnis automatisch in die "Suche" nach class-
    Dateien ein. Die Angabe ist nicht notwendig. Außer, du hast irgendwie
    eine CLASSPATH-Umgebungsvariable definiert. Ich behaupte einfach mal,
    daß diese unnötig ist. Schmeiß sie raus!

    Nimm lieber die JAR-Datei (eprog.jar?) beim Aufruf des Interpreters
    in den classpath auf, indem du den Aufruf so gestaltest:
        java -cp eprog.jar Euklid

    Wenn's nicht geht, frag einfach nach. Aber bitte mit etwas mehr
    Informationen. Z.B. mit näheren Angaben zu diesem ominösen eprog.jar.
    Programmcode wäre auch nicht schlecht!

    Gruß
    Slyh

    1. Wieso gibst du dann in einem Posting weiter unten im Forum eine
      Antwort, wenn du dasselbe (bzw. ein ähnlich gelagertes Problem) selbst
      nicht in den Griff kriegst?

      Weil ich das kompilieren (nach anfänglichen Problemen) dann selbst in den Griff bekommen habe.

      Was ist eprog/EprogIO? Wo kommt das her? Wo liegen die Dateien?
      Hast du die Dateien (wie im genannten Posting angedroht) in dieses ext-
      Verzeichnis kopiert? Laß das besser bleiben. Binde externe JAR-Files
      über den Classpath ein (bzw. konfiguriere deine IDE so, daß sie das
      für dich tut).

      Das hat mir aber erst das kompilieren ermöglicht; ich hab andere Orte für eprog.jar probiert (selbes Verzeichnis wie .java file, Ordner in dem der Compiler javac liegt)

      Was hat dieses komische "-cp ." bei deinem Aufruf zu suchen? Java
      schließt das aktuelle Verzeichnis automatisch in die "Suche" nach class-
      Dateien ein. Die Angabe ist nicht notwendig. Außer, du hast irgendwie
      eine CLASSPATH-Umgebungsvariable definiert. Ich behaupte einfach mal,
      daß diese unnötig ist. Schmeiß sie raus!

      das "-cp ." hab ich probiert, weil das in dem Thread unten jemand so angeraten hat.

      Nimm lieber die JAR-Datei (eprog.jar?) beim Aufruf des Interpreters
      in den classpath auf, indem du den Aufruf so gestaltest:
          java -cp eprog.jar Euklid

      Hab ich probiert, hat aber nicht geklappt!

      Wenn's nicht geht, frag einfach nach. Aber bitte mit etwas mehr
      Informationen. Z.B. mit näheren Angaben zu diesem ominösen eprog.jar.

      Das tu' ich hiermit!

      Programmcode wäre auch nicht schlecht!

      Bitteschön:
      _____________________________________________________________________
      import eprog.*;
      public class Euklid extends EprogIO
      {
         public static void main (String[] args)
                throws EprogException
         {
          int x, y, rest;
          print ("Zum berechnen des GGT bitte zwei Zahlen eingeben");
          x = readInt ();
          y = readInt ();
          rest = x % y;
          while (rest != 0)
           {
            x = y;
            y = rest;
            rest = x % y;
           }
          print ("Der GGT ist" + y);
         }
      }
      _____________________________________________________________________

      Gruß
      Slyh

      Danke für die Hilfe schon im Vorhinein,
      Tobias

      1. Hallo,

        also, das funktioniert folgendermaßen:

        • Laß die JAR-Datei mal in dem Verzeichnis, in dem auch deine .java bzw.
          .class-Datei ist.

        • Kompiliere die .java-Datei:
                javac -classpath eprog.jar Euklid.java

        (eprog.jar steht jetzt also im classpath. So findet der Compiler
           alle darin enthaltenen Dateien. Sollten weitere .jar-Dateien
           notwendig sein, so kannst du diese durch jeweils ein Semikolon
           getrennt hintereinander schreiben. Statt .jar-Dateien kannst du
           hier auch Verzeichnisse angeben. Dann werden alle darin
           befindlichen class/java-Files miteinbezogen. Sollte deine Anwendung
           aus mehreren Java-Dateien bestehen, wäre der Punkt hier auch schon
           notwendig.)

        • Führe die .class-Datei aus:
                java -cp eprog.jar;. Euklid

        (Hier ist jetzt der Punkt wichtig, weil er sonst die kompilierte
           Euklid-Klasse nicht findet. Der Rest ist gleich wie beim
           Kompilieren.)

        Ich hoffe geholfen zu haben.
        Das mit dem ClassPath ist zugegebenermaßen etwas gewöhnungsbedürftig.
        Jede anständige IDE nimmt dem Benutzer jedoch diese Arbeit ab. Da
        Anwendungen außerdem in der Regel komplett in einer .jar-Datei
        ausgeliefert werden, ist der Aufwand der manuellen Angabe des
        classpathes aber dort ohnehin hinfällig.

        Gruß
        Slyh

        1. Hehe, hallo Sensei.
          Mir gehts genauso :)

          Hast du auch WinXP?

          @Slyh: was meinst du mit IDE? Braucht man unbedingt eine IDE Festplatte? Ich hab nämlich eine SCSI.

          @Sensei: mail mir doch mal wie du so weiterkommst: kitt@alieneye.net

          1. Hallo,

            Hast du auch WinXP?

            Ich glaube nicht, daß das Problem beim verwendeten Betriebssystem
            zur suchen ist. (Ausschließen möchte ich es aber auch nicht.)

            @Slyh: was meinst du mit IDE?

            IDE = Integrated Development Environment = Entwicklungsumgebung
            Z.B. JBuilder oder Eclipse oder dergleichen.

            Gruß
            Slyh

            1. Hallo,

              Hast du auch WinXP?

              Ich glaube nicht, daß das Problem beim verwendeten Betriebssystem
              zur suchen ist. (Ausschließen möchte ich es aber auch nicht.)

              @Slyh: was meinst du mit IDE?

              IDE = Integrated Development Environment = Entwicklungsumgebung
              Z.B. JBuilder oder Eclipse oder dergleichen.

              Gruß
              Slyh

              Verstehe. Dachte du redest von der Festplatte :))
              Naja, deine Version funktioniert jedenfalls komplett, aber es liegt sicher an WinXP. Bei ME und früher, wo man noch alles in die Autoexec.bat eingegeben hat, hat das alles bei mir noch funktioniert. Reibungslos.

  2. [http:http://www.amazon.de/exec/obidos/ASIN/3519226421/qid=1035991303/sr=2-1/ref=sr_aps_prod_1_1/028-6543105-1923755]

    1. Aber hallo...! ;)

      [http:http://www.amazon.de/exec/obidos/ASIN/3519226421/qid=1035991303/sr=2-1/ref=sr_aps_prod_1_1/028-6543105-1923755]

      Pappnase[tm]! So etwas kannst du dir getrost sparen, nicht einmal Links setzen kannst du, zudem postest du lächerliche URLs, anstatt dem Fragenden eine zielführende und hilfreiche Antwort zu geben. Pfui!

      Keine Grüße.
      Mathias
      P.S. http://forum.de.selfhtml.org/archiv/2002/4/10155/#m56497