Lemmy Danger: Applet funktioniert nicht über Netzwerk

Hallo zusammen,

Als Java-Anfänger bin ich nun eigentlich sehr stolz auf mein erstes handgemachtes Applet.

Probleme bereitet es mir nur, wenn ich es nicht vom Original-Ordner aus laufen lasse. Weder eine auf meinen Webspace hochgeladene, noch eine auf eine andere Partition kopierte Version läuft.

Es gab keine Fehlermeldung beim Kompilieren (Zsys.java->Zsys.class) und auch beim Ausführen meiner dazugehörenden HTML-Seite (Zsys.htm) im selben Ordner lief alles gut. Nur wenn ich die HTML- und die Class-Datei jetzt an einen anderen Ort kopiere, hab ich Schwierigkeiten.

Die Java-Konsole meldet folgenden Fehler dazu:

java.lang.NoClassDefFoundError: Zsys$ButtonHandler
  at Zsys.init(Zsys.java:48)
  at sun.applet.AppletPanel.run(AppletPanel.java:354)
  at java.lang.Thread.run(Thread.java:523)

Soweit ich das nun verstehe, hat die JRE Probleme mit der von mir geschriebenen Klasse ButtonHandler, die ich wiefolgt aufrufe und definiere:

Aufruf:

class ButtonHandler implements ActionListener {
    public void actionPerformed(ActionEvent e){
      if(e.getSource()==rechneButton){
        ...
    }
  }

Definition:

ActionListener handler = new ButtonHandler();
  rechneButton = new JButton("Umwandeln");
  rechneButton.addActionListener(handler);

Der Aufruf steht im init() des Applets, die Definition außerhalb.

Kann mir vielleicht irgend jemand sagen, woran das liegen könnte. An falschen Umgebungsvariablen vielleicht? Ich hoffe mal, es ist nur irgendein popliger Anfängerfehler und Ihr könnt mir da ein wenig weiterhelfen...

Vielen Dank und LG ausm Hesseland
Lemmy

http://www.olison.com

--
Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
  1. Hallo,

    Die Java-Konsole meldet folgenden Fehler dazu:

    java.lang.NoClassDefFoundError: Zsys$ButtonHandler
      at Zsys.init(Zsys.java:48)
      at sun.applet.AppletPanel.run(AppletPanel.java:354)
      at java.lang.Thread.run(Thread.java:523)

    Java sagt dir, daß er die Datei Zsys$ButtonHandler.class aus welchen
    Gründen auch immer nicht finden/laden konnte. Liegt die auf deinem
    Webspace bzw. hast du die mitkopiert?

    Falls ja, gib doch bitte mal die URL an, damit man sich das ansehen kann.

    Gruß
    Slyh

    1. Hallo Slyh,

      [...] Zsys$ButtonHandler.class [...]
      Liegt die auf deinem Webspace bzw. hast du die mitkopiert?

      Naja, das ist keine externe Klasse, die ist innerhalb der Zsys.class definiert... (s.Link).

      Falls ja, gib doch bitte mal die URL an, damit man sich das ansehen kann.

      Siehe: http://www.olison.com/Zsys.htm. Ich hab auch gleich mal den Quelltext der Zsys.java druntergepackt. Aber nicht erschrecken, ist ein Erstlingswerk... ;)

      Das Applet soll eine Dezimal-Zahl entgegennehmen und die entsprechenden Hexadezimal- und Binär-Werte ausgeben. Wie gesagt: Im "Ursprungs"-Ordner hat sie das auch tadellos gemacht...

      LG ausm Hesseland
      Lemmy

      http://www.olison.com

      --
      Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
      1. Hallo,

        [...] Zsys$ButtonHandler.class [...]
        Liegt die auf deinem Webspace bzw. hast du die mitkopiert?
        Naja, das ist keine externe Klasse, die ist innerhalb der Zsys.class definiert... (s.Link).

        Ja, ich weiß. Deshalb heißt die Datei auch nicht ButtonHandler.class,
        sondern Zsys$ButtonHandler.class :-)
        Der Java-Compiler erzeugt für jede Klasse (sogar für anonyme oder
        lokale Klassen) eine .class-Datei, so auch für die Inner-Klasse
        ButtonHandler.
        Wenn du genau guckst, wirst du die Datei tatsächlich finden.

        Falls ja, gib doch bitte mal die URL an, damit man sich das ansehen kann.
        Siehe: http://www.olison.com/Zsys.htm. Ich hab auch gleich mal den Quelltext der Zsys.java druntergepackt.
        Aber nicht erschrecken, ist ein Erstlingswerk... ;)

        Da ich behaupte die Lösung zu kennen, hab ich ihn jetzt mal nicht
        angeguckt. ;-)

        Gruß
        Slyh

        1. Ei Caramba!

          Welch Glück - ein Anfängerfehler! Hab mittlerweile soviele Klassen in meinem Ordner, dass ich die tatsächlich übersehen habe... Vielen Dank für den Tipp :)

          Ich werde morgen mal in der Bibliothek nach einem gescheiten Einsteiger-Buch suchen. Diese Kochrezepte*, die ich mir ausgeliehen hatte, sind halt nix für Java-Neulinge, die von so grundlegenden Dingen noch keine Ahnung haben... ;)

          LG ausm Hesseland
          Lemmy

          http://www.olison.com

          * gemeint ist das "Java-Kochbuch" von Ian Darwin

          --
          Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
          1. Hallo,

            Ich werde morgen mal in der Bibliothek nach einem gescheiten Einsteiger-Buch suchen. Diese Kochrezepte*, die ich mir ausgeliehen hatte, sind halt nix für Java-Neulinge, die von so grundlegenden Dingen noch keine Ahnung haben... ;)

            Sehr gute finde ich das Javabuch von Guido Krüger (http://www.javabuch.de).
            Allerdings sollte man hierfür schon Programmierkenntnisse habe und
            evtl. auch schon ein bißchen was mit objektorientierter Programmierung
            gemacht haben.

            Außerdem soll noch "Java ist auch eine Insel" (oder so ähnlich)
            brauchbar sein. Selbst gelesen habe ich es nicht.
            Guck doch mal bei Amazon. Aus den Kundenrezensionen kann man immer ganz
            gut rauslesen, ob das Buch eher für absolute Anfänger (ohne Programmier-
            kenntnis) oder schon für eher Fortgeschrittene ist.

            Gruß
            Slyh

            1. Ei guude wie?

              Die HTML-Version vom Javabuch hatte ich mir schon runtergeladen, aber so übersichtlich fand ich das jetzt nicht gerade.
              So ein bißchen Ahnung von OO-Programmierung hab ich ja schon (2 Semester C/C++), aber sonderlich tief sind wir da nicht vorgedrungen. Es geht mir eher um Besonderheiten von Java, wie  etwa die Syntax, was beim Kompilieren genau passiert (wie z.B. das mit den classes), etc.
              Ich hab mir heute das Buch "Java professionell" von Gerhard Wilhelms und Markus Knopp ausgeliehen und glaub, damit fahr ich ganz gut. Und wenn nicht: Zurückgeben und unter den 50 anderen Java-Büchern wählen. Fachhochschul-Bibliotheken sind doch was Feines ;)

              LG ausm Hesseland
              Lemmy

              http://www.olison.com

              --
              Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
              1. Hi,

                Und wenn nicht: Zurückgeben und unter den 50 anderen Java-Büchern wählen. Fachhochschul-Bibliotheken sind doch was Feines ;)

                auch lesenswert: http://www.mindview.net/Books

                Viele Grüße,
                Martin Jung

  2. hallo Lemmy,

    Es gab keine Fehlermeldung beim Kompilieren

    Das ist schon mal viel wert, das heißt, dein Java-Compiler hatte alle nötigen Bibliotheken (Klassen), die eventuell benötigt werden

    java.lang.NoClassDefFoundError: Zsys$ButtonHandler
      at Zsys.init(Zsys.java:48)

    Was steht denn ganz "krass konkret" in Zeile 48 deiner JAVA-Quelldatei drin?

    Soweit ich das nun verstehe, hat die JRE Probleme mit der von mir geschriebenen Klasse ButtonHandler

    du hast keine Klasse "ButtonHandler" geschrieben, sondern "ZsysButtonHandler", und das möglicherweise nicht konsequent überall im Quelltext so vermerkt ?

    http://www.olison.com

    oups ... ich wollte, neugierig wie ich nun mal bin, rasch vorbeiscahuen. Sofort werde ich gefragt, ob ich ein Cookie entgegennehmen möchte. Möchte ich natürlicherweise nicht, weil ich heute schon genug Kekse verzehrt habe. Ich werde aber volle 23mal (dreiundzwanzigmal!) hintereinander gefragt, wenn ich konsequent auf "Nein" drücke. Muß denn dieser Cookie-Kram sein?

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph.

      Das ist schon mal viel wert, das heißt, dein Java-Compiler hatte alle nötigen Bibliotheken (Klassen), die eventuell benötigt werden

      Das freut mich schon mal zu hören...

      Was steht denn ganz "krass konkret" in Zeile 48 deiner JAVA-Quelldatei drin?

      Et voilà, Zeile 48: ActionListener handler = new ButtonHandler();

      Muß denn dieser Cookie-Kram sein?

      Ähm, was mich nun doch sehr wundert, da ich eigentlich weder mit JS noch mit PHP oder sonstwie Cookies setze auf meiner Seite... 8-< Da ich alle Scripte selbst geschrieben habe und dort _keine_ Cookies verwendet werden, muss das wohl ein freundlicher Gruss von Lycos sein. Danke für den Hinweis, werd mich mal drum kümmern.

      LG ausm Hesseland
      Lemmy

      http://www.olison.com

      --
      Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
    2. Guten Morgen,

      Soweit ich das nun verstehe, hat die JRE Probleme mit der von mir geschriebenen Klasse ButtonHandler
      du hast keine Klasse "ButtonHandler" geschrieben, sondern "ZsysButtonHandler", und das möglicherweise nicht konsequent überall im Quelltext so vermerkt ?

      Darüber würde sich der Compiler beschweren.

      Christoph S.

      Viele Grüße,
      Martin Jung