Matze: Probleme beim Einbauen eines Applet in Website

Hallo,

ich habe in Netbeans 5.0 ein Applet geschrieben, welches aus zwei Klassen "InputBox.java" und "Wait.java" besteht und im Netbeans problemlos läuft. Jetzt wollte ich das Applet (es ist mein Erstes) in meine Website einbauen, leider wird aber außer einer leeren Fläche nichts angezeigt. Wenn ich im Firefox die Konsole öffne, erhalte ich folgende Fehlermeldung:

java.lang.NoClassDefFoundError: InputBox (wrong name: inputbox/InputBox)
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClass(Unknown Source)
 at java.security.SecureClassLoader.defineClass(Unknown Source)
 at sun.applet.AppletClassLoader.findClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at sun.applet.AppletClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at sun.applet.AppletClassLoader.loadCode(Unknown Source)
 at sun.applet.AppletPanel.createApplet(Unknown Source)
 at sun.plugin.AppletViewer.createApplet(Unknown Source)
 at sun.applet.AppletPanel.runLoader(Unknown Source)
 at sun.applet.AppletPanel.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)
java.lang.NoClassDefFoundError: InputBox (wrong name: inputbox/InputBox)
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClass(Unknown Source)
 at java.security.SecureClassLoader.defineClass(Unknown Source)
 at sun.applet.AppletClassLoader.findClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at sun.applet.AppletClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at sun.applet.AppletClassLoader.loadCode(Unknown Source)
 at sun.applet.AppletPanel.createApplet(Unknown Source)
 at sun.plugin.AppletViewer.createApplet(Unknown Source)
 at sun.applet.AppletPanel.runLoader(Unknown Source)
 at sun.applet.AppletPanel.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)

Der für das Einbinden verantworliche Code sieht so aus:
<object codebase="http://www...de/../inputbox/" classid="java:InputBox.class" codetype="application/java-vm"
          width="400" height="20">
    Ihr Browser unterstuetzt keine Java-Applets.</object>

Verwendet man die etwas ältere Variante für den Einbau eines Applets, sieht das ganze so aus:
<applet codebase="http://www...de/../inputbox/" code="InputBox.class" width="400" heigth="20" align="middle" alt="News">
<param name="background" value="00A2FF">
<param name="foreground" value="FFFFFF">
</applet>
Auf diese Weise funktioniert es aber leider auch nicht.

Der Name des Packages, in dem die beiden oben genannten Klassen liegen, heißt inputbox.

Ich hab keine Ahnung, wo der Fehler liegt und würde mich deshalb sehr über Tipps und Hilfe freuen. Vielen Dank schon vorab.

Mit freundlichen Grüßen,
Matze

  1. Ich grüsse den Cosmos,

    Der Name des Packages, in dem die beiden oben genannten Klassen liegen, heißt inputbox.

    Wieso will das Applet dann auf die Klasse InputBox zugreifen?
    Soweit ist weiss, ist JAVA in solchen Fällen Case-Sensitive

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
    1. Hallo,

      Wieso will das Applet dann auf die Klasse InputBox zugreifen?
      Soweit ist weiss, ist JAVA in solchen Fällen Case-Sensitive

      um Missverständnisse zu vermeiden:
      Die beiden von mir geschriebenen Klasen liegen in einem Package (bzw. einem Ordner) namens inputbox. Die Aufgabe des ersten Klasse (InputBox.java) ist es, das Applet zu erzeugen und die nötigen graphischen Komponenten darzustellen. Manche Aufgaben habe ich in das zweite .java-file ausgelagert. Nach dem Compilieren gibt es somit zwei .class-files (InputBox.class und Wait.class). Das zum Starten des Applets benötigte InputBox.class-file habe ich im Quelltext meiner Website angegeben.
      [<object codebase="http://www...de/../inputbox/" classid="java:InputBox.class" codetype="application/java-vm"
                width="400" height="20">
          Ihr Browser unterstuetzt keine Java-Applets.</object>]
      Die zweite .class-file liegt im gleichen Verzeichnis, sodass darauf zugegriffen werden kann.

      Viele Grüße,
      Matze

  2. Hallo,

    Der für das Einbinden verantworliche Code sieht so aus:
    <object codebase="http://www...de/../inputbox/" classid="java:InputBox.class" codetype="application/java-vm"
              width="400" height="20">
        Ihr Browser unterstuetzt keine Java-Applets.</object>

    Im Verzeichnis http://www...de/../inputbox/ liegt was? Liegen dort die Dateien InputBox.class und Wait.class oder liegt dort ein JAR-Archiv?

    Der Name des Packages, in dem die beiden oben genannten Klassen liegen, heißt inputbox.

    Im Code von InputBox.java steht

    package inputbox;

    ?

    Wenn die class-Files im Ordner http://www...de/../inputbox/ liegen und in den Klassen als package inputbox angegeben ist, muss die Einbindung so aussehen:

    <object codebase="http://www...de/../" classid="java:inputbox.InputBox" codetype="application/java-vm" width="400" height="20">Ihr Browser unterstuetzt keine Java-Applets.</object>

    oder

    <applet codebase="http://www...de/../" code="inputbox.InputBox" width="400" heigth="20"></applet>

    Codebase ist also das Verzeichnis in dem das Verzeichnis inputbox und damit das package inputbox liegt.

    Mit einem JAR-Archiv (der normale Weg), welches in http://www...de/../inputbox/ liegt, _und_ in den Klassen als package inputbox angegeben, wäre das:

    <object classid="java:inputbox.InputBox" codetype="application/java-vm" width="400" height="20">Ihr Browser unterstuetzt keine Java-Applets.
    <param name="java_archive" value="http://www...de/../inputbox/myarchive.jar">
    </object>

    <applet archive="http://www...de/../inputbox/myarchive.jar" code="inputbox.InputBox" width="400" heigth="20"></applet>

    viele Grüße

    Axel

    1. Hallo,

      vielen Dank für den Hinweis. Da wäre ich selbst nicht drauf gekommen. Im Firefox funktioniert's jetzt.
      Allerdings zeigt sowohl Opera als auch Netscape immer noch nichts (weiße Fläche) an. Auch im Firefox erscheint nur noch eine leere weiße Fläche, sobald der Reload-Button gedrückt wird.
      Hat jemand eine Idee, woran das liegen könnte?
      Der verwendete Code lautet nun:
      <object classid="java:inputbox.InputBox" codetype="application/java-vm" width="400" height="20">Ihr Browser unterstuetzt keine Java-Applets.
      <param name="java_archive" value="http://www...de/../inputbox/myarchive.jar">
      </object>

      Vielen Dank!
      Matze

      1. Hallo,

        vielen Dank für den Hinweis. Da wäre ich selbst nicht drauf gekommen. Im Firefox funktioniert's jetzt.
        Allerdings zeigt sowohl Opera als auch Netscape immer noch nichts (weiße Fläche) an.

        Welcher Opera, welcher Netscape? Mein Opera 9.00 zeigt eine _graue_ Fläche mit "Applet not found", wenn er das Applet nicht finden kann. Was sagen die Java-Konsolen?

        Auch im Firefox erscheint nur noch eine leere weiße Fläche, sobald der Reload-Button gedrückt wird.

        Huch? Was sagt die Java-Konsole?

        Der verwendete Code lautet nun:
        <object classid="java:inputbox.InputBox" codetype="application/java-vm" width="400" height="20">Ihr Browser unterstuetzt keine Java-Applets.
        <param name="java_archive" value="http://www...de/../inputbox/myarchive.jar">
        </object>

        Kann man das irgendwo online sehen? Wie sieht die myarchive.jar aus, wenn Du sie mit einem JAR-Entpacker ansiehst? Mit package inputbox müsste da:

        File           in Verzeichnis
        MANIFEST.MF    /META-INF
        InputBox.class /inputbox

        drin sein.

        viele Grüße

        Axel

        1. Hallo,

          Welcher Opera, welcher Netscape? Mein Opera 9.00 zeigt eine _graue_ Fläche mit "Applet not found", wenn er das Applet nicht finden kann. Was sagen die Java-Konsolen?

          Ich hab Opera 9.10 und Netscape 7.1. Der Firefox liegt in der Version 2.0.0.2 vor. Die Java-Konsole lässt sich nicht mehr (mit der rechten Maustaste) aufrufen (und einen anderen Aufruf konnte ich nicht finden). Um die Verwirrung perfekt zu machen: Im Firefox, Version 1.5.0.10, funktioniert Reload...

          Auch im Firefox erscheint nur noch eine leere weiße Fläche, sobald der Reload-Button gedrückt wird.
          Huch? Was sagt die Java-Konsole?

          (Nichts :-(   siehe oben)

          Der verwendete Code lautet nun:
          <object classid="java:inputbox.InputBox" codetype="application/java-vm" width="400" height="20">Ihr Browser unterstuetzt keine Java-Applets.
          <param name="java_archive" value="http://www...de/../inputbox/myarchive.jar">
          </object>
          Kann man das irgendwo online sehen? Wie sieht die myarchive.jar aus, wenn Du sie mit einem JAR-Entpacker ansiehst? Mit package inputbox müsste da:

          File           in Verzeichnis
          MANIFEST.MF    /META-INF
          InputBox.class /inputbox

          drin sein.

          Genau so sieht das entpackte jar aus. Es gibt zwei Ordner namens META-INF mit einer Manifest.mf und ein Ordner inputbox mit einer Datei InputBox.class.
          Anzusehen ist das ganze unter http://www.hirzel.gmxhome.de/startseiteJava.html

          Viele Grüße und danke für die Hilfe,
          Matze

          1. Hallo,

            Ich hab Opera 9.10 und Netscape 7.1. Der Firefox liegt in der Version 2.0.0.2 vor. Die Java-Konsole lässt sich nicht mehr (mit der rechten Maustaste) aufrufen (und einen anderen Aufruf konnte ich nicht finden).

            Hört sich nach Windows an.

            Opera: Extras-Weiteres-Java-Konsole
            FireFox: Rechtsklick auf das Java-Statussymbol im SystemTray.

            Anzusehen ist das ganze unter http://www.hirzel.gmxhome.de/startseiteJava.html

            Hab mir das JAR mal geladen. Tests ergeben folgendes:

            FireFox: 1.5.0.10 und 2.0.0.2 funktionieren bei mir unter Windows 2000

            Opera: 9.00 unter Windows 2000
            Bringt beim ersten Laden (kein weiteres Fenster(Tab) offen) in der Java-Konsole:
            java.lang.InterruptedException: sleep interrupted
             at java.lang.Thread.sleep(Native Method)
             at inputbox.Wait.someMiliSec(Wait.java:35)
             at inputbox.InputBox.insert2(InputBox.java:109)
             at inputbox.InputBox.insert2(InputBox.java:110)
             at inputbox.InputBox.insert2(InputBox.java:110)
             at inputbox.InputBox.insert2(InputBox.java:110)
             at inputbox.InputBox.insert2(InputBox.java:110)
                    ...

            Das Applet startet vorher und der Hintergrund wird blau. Es liegt also nicht am Einbinden des Applets, sondern am Applet selbst. Irgenwas hast Du bei Deinem Threading falsch gemacht.

            Code:

            <!--[if !IE]>-->
                  <object classid="java:inputbox.InputBox"
                          type="application/x-java-applet"
                          archive="mypackage.old/TextInput.jar"
                          height="20" width="600" >
                    <!-- Konqueror browser needs the following param -->
                    <param name="archive" value="mypackage.old/TextInput.jar" />
                  <!--<![endif]-->
                    <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
                            height="20" width="600" >
                      <param name="code" value="inputbox.InputBox" />
                      <param name="archive" value="mypackage.old/TextInput.jar" />
                    </object>
                  <!--[if !IE]>-->
                  </object>
                  <!--<![endif]-->

            Siehe http://ww2.cs.fsu.edu/~steele/XHTML/appletObject.html.

            Im IE funktioniert es damit übrigens auch.

            Im Appletviewer funktioniert es ebenfalls mit o.a. Code in einer AppletTest.html.

            Schau also mal nach, was Da bei inputbox.Wait.someMiliSec bei Dir passiert, ggf. poste den Codeteil mal hier.

            viele Grüße

            Axel

            1. Hallo,

              Hört sich nach Windows an.

              Stimmt :-)

              Opera: Extras-Weiteres-Java-Konsole
              FireFox: Rechtsklick auf das Java-Statussymbol im SystemTray.

              Vielen Dank!

              Das Applet startet vorher und der Hintergrund wird blau. Es liegt also nicht am Einbinden des Applets, sondern am Applet selbst. Irgenwas hast Du bei Deinem Threading falsch gemacht.

              Ja, sieht so aus. Das Komische daran ist nur, dass das Applet in Netscape oder beim Starten über die cmd fehlerfrei läuft. Nur in den Browsern funktioniert es einfach nicht richtig.

              Code:

              <!--[if !IE]>-->
                    <object classid="java:inputbox.InputBox"
                            type="application/x-java-applet"
                            archive="mypackage.old/TextInput.jar"
                            height="20" width="600" >
                      <!-- Konqueror browser needs the following param -->
                      <param name="archive" value="mypackage.old/TextInput.jar" />
                    <!--<![endif]-->
                      <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
                              height="20" width="600" >
                        <param name="code" value="inputbox.InputBox" />
                        <param name="archive" value="mypackage.old/TextInput.jar" />
                      </object>
                    <!--[if !IE]>-->
                    </object>
                    <!--<![endif]-->

              Ich hab obigen Code anstatt des bisherigen Code eingebaut und die values "mypackage.old/TextInput.jar" durch den Pfad "http://www....de/applets/inputbox/TextInput.jar" ersetzt. Funktionert das so bei Dir? Bei mir leider nicht. Vielleicht hab ich auch etwas falsch vrstanden.

              Schau also mal nach, was Da bei inputbox.Wait.someMiliSec bei Dir passiert, ggf. poste den Codeteil mal hier.

              public class Wait {
                 [...]
                 public static void someMiliSec(long s) {
                   try {
                     Thread.currentThread().sleep(s * 100);
                     }
                   catch (InterruptedException e) {
                     e.printStackTrace();
                     }
                 }
              }
              Der Aufruf erfolgt in der Klasse InputBox über
              Wait wait = new Wait();
              wait.someMiliSec(1); //alternativ: wait.someMiliSec(100); und dafür im try-Block Thread.currentThread().sleep(s);
              (@ Axel Richter: Du kannst das .jar-file auch entpacken und genauer ansehen. Ich selbst finde (leider) keinen Fehler :-( der mich zur Lösung des Problems führt.)

              Viele Grüße und herzlichen Dank für Deine Bemühungen und die Geduld,
              Matze

              1. Hallo,

                Das Applet startet vorher und der Hintergrund wird blau. Es liegt also nicht am Einbinden des Applets, sondern am Applet selbst. Irgenwas hast Du bei Deinem Threading falsch gemacht.
                Ja, sieht so aus. Das Komische daran ist nur, dass das Applet in Netscape oder beim Starten über die cmd fehlerfrei läuft. Nur in den Browsern funktioniert es einfach nicht richtig.

                Ja, die Browser sind auch selbst Multithreading-Anwendungen. Je nachdem, wie Du das Applet-Threading aufbaust, kannst Du die schon mächtig durcheinander bringen.

                Code:

                <!--[if !IE]>-->
                      <object classid="java:inputbox.InputBox"
                              type="application/x-java-applet"
                              archive="mypackage.old/TextInput.jar"
                              height="20" width="600" >
                        <!-- Konqueror browser needs the following param -->
                        <param name="archive" value="mypackage.old/TextInput.jar" />
                      <!--<![endif]-->
                        <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
                                height="20" width="600" >
                          <param name="code" value="inputbox.InputBox" />
                          <param name="archive" value="mypackage.old/TextInput.jar" />
                        </object>
                      <!--[if !IE]>-->
                      </object>
                      <!--<![endif]-->

                Ich hab obigen Code anstatt des bisherigen Code eingebaut und die values "mypackage.old/TextInput.jar" durch den Pfad "http://www....de/applets/inputbox/TextInput.jar" ersetzt. Funktionert das so bei Dir? Bei mir leider nicht. Vielleicht hab ich auch etwas falsch vrstanden.

                Der obige Code(ja, mypackage.old/TextInput.jar ist der relative Pfad zum JAR) funktioniert(Er startet das Applet) so bei mir im IE6.0, FF1.5, FF2.0, Opera9.0 unter Windows und Konqueror und Mozilla unter Debian-Linux. Bei Opera versucht dann irgendwas ständig in das sleep von inputbox.Wait.someMiliSec einzugreifen.

                Schau also mal nach, was Da bei inputbox.Wait.someMiliSec bei Dir passiert, ggf. poste den Codeteil mal hier.
                public class Wait {
                   [...]
                   public static void someMiliSec(long s) {
                     try {
                       //Thread.currentThread().sleep(s * 100);

                Thread.sleep(s * 100);

                }
                     catch (InterruptedException e) {
                       e.printStackTrace();
                       }
                   }
                }
                Der Aufruf erfolgt in der Klasse InputBox über
                Wait wait = new Wait();
                wait.someMiliSec(1); //alternativ: wait.someMiliSec(100); und dafür im try-Block Thread.currentThread().sleep(s);

                Ich würde die Methode .sleep() nicht vom laufenden Thread, sondern abstrakt von der Klasse Thread aufrufen. So kenne ich es jedenfalls. Ob das Dein Problem löst, weiß ich nicht.

                Zur Problemlösung interessant wäre noch, wie Du den Thread startest. Ist InputBox runnable? Wenn ja, wie sehen die Methoden start() und run() von InputBox aus?

                Insbesondere wäre es wichtig, per

                Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

                _einmalig_, also außerhalb der Schleife, beim run() dem Laufschriftthread mitzuteilen, dass er sich nicht so wichtig nehmen soll ;-).

                (@ Axel Richter: Du kannst das .jar-file auch entpacken und genauer ansehen. Ich selbst finde (leider) keinen Fehler :-( der mich zur Lösung des Problems führt.)

                *g* Ja, toll. Da sind die .class-Files drin. Pack die .java-Files mit ein, dann könnte ich das.

                btw.: Bist Du sicher, dass Du für so etwas unwichtiges wie eine Laufschrift wirklich ein JavaApplet einsetzen willst? Oder ist das nur ein Lernprojekt?

                btw2.: Wenn schon, willst Du nicht eines der Millionen Laufschrift-Applets, die schon existieren, einfach nur nutzen bzw. umbauen? Bsp.:http://userpage.fu-berlin.de/~ahahn/java/laufschrift/laufschrift.html. Das läuft auch im Opera unter Windows.

                viele Grüße

                Axel

                1. Hallo,

                  Der obige Code(ja, mypackage.old/TextInput.jar ist der relative Pfad zum JAR) funktioniert(Er startet das Applet) so bei mir im IE6.0, FF1.5, FF2.0, Opera9.0 unter Windows und Konqueror und Mozilla unter Debian-Linux. Bei Opera versucht dann irgendwas ständig in das sleep von inputbox.Wait.someMiliSec einzugreifen.

                  Ok, unter IE 7.0 und FF 1.5 funktioniert es jetzt (sogar mit Reload). Allerdings klappt es im FF 2.0 und im IE 6.0 nur einmalig. Sobald man die Seite neu ladet oder kurz verlässt funktioniert es nicht mehr (d.h. im IE 6.0 wird für einen kurzen Moment der Text angezeigt, dann aber von der weißen Fläche überdeckt). Der Opera verweigert sich ganz :-( .

                  Ich würde die Methode .sleep() nicht vom laufenden Thread, sondern abstrakt von der Klasse Thread aufrufen. So kenne ich es jedenfalls. Ob das Dein Problem löst, weiß ich nicht.

                  Hab ich so eingebaut. Leider ist das Problem damit nicht gelöst.

                  Insbesondere wäre es wichtig, per

                  Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

                  _einmalig_, also außerhalb der Schleife, beim run() dem Laufschriftthread mitzuteilen, dass er sich nicht so wichtig nehmen soll ;-).

                  (@ Axel Richter: Du kannst das .jar-file auch entpacken und genauer ansehen. Ich selbst finde (leider) keinen Fehler :-( der mich zur Lösung des Problems führt.)
                  *g* Ja, toll. Da sind die .class-Files drin. Pack die .java-Files mit ein, dann könnte ich das.

                  Ups, sorry. Die Klassen sind jetzt im gleichen Ordner wie das jar-file. Du kannst Dir die Klassen also anschauen.
                  Die Sache mit dem Thread hab ich eingebaut, es ist also ein neues jar-file online.

                  btw.: Bist Du sicher, dass Du für so etwas unwichtiges wie eine Laufschrift wirklich ein JavaApplet einsetzen willst? Oder ist das nur ein Lernprojekt?

                  Naja. Es ist wohl kein Geheimnis, dass ich von Applets noch nicht viel Ahnung habe. Applications habe ich schon massig programmiert, aber das hier ist jetzt mein erstes Applet. Es handelt sich hier also um ein Lernprojekt mit einem eingermassen sinnvollem Hintergrund. Außerdem wollte ich nicht nur Code übernehmen, sondern selber schreiben.

                  btw2.: Wenn schon, willst Du nicht eines der Millionen Laufschrift-Applets, die schon existieren, einfach nur nutzen bzw. umbauen? Bsp.:http://userpage.fu-berlin.de/~ahahn/java/laufschrift/laufschrift.html. Das läuft auch im Opera unter Windows.

                  Danke für den link.
                  Das ist ja gerade das dramatische. Warum funktioniert das im Oera unter Windows und mein Applet nicht? Gibt's doch nicht. (Ich werd noch verrückt... :-)  )
                  Es wäre echt super, wenn Du Dir die Klassen mal ansehen könntest. Vielleicht findest Du Fehler. Viieelen Dank für deine Hilfe.

                  Viele Grüße
                  Matze

                  1. Hallo,

                    (@ Axel Richter: Du kannst das .jar-file auch entpacken und genauer ansehen. Ich selbst finde (leider) keinen Fehler :-( der mich zur Lösung des Problems führt.)
                    *g* Ja, toll. Da sind die .class-Files drin. Pack die .java-Files mit ein, dann könnte ich das.
                    Ups, sorry. Die Klassen sind jetzt im gleichen Ordner wie das jar-file. Du kannst Dir die Klassen also anschauen.

                    Was passiert?
                    Life-Cycle eines Applets ist init - start - stop - destroy. Bei init sagst Du:

                      
                        public void init() {  
                            this.initComponents();  
                            this.setComponents();  
                            this.addText();  
                            this.insert1();  
                        }  
                    
                    

                    Danach ruft insert1 insert2 auf, insert2 ruft entweder sich selbst(ganz schlechter Programmierstil ;-)) oder wieder insert1 auf. Es entsteht also nach insert bereits eine Endlosschleife, noch völlig ohne Threading.

                    Bei start startest Du, wie bei awt.Applets üblich, den Thread, wobei das Applet selbst runnable ist.

                      
                        public synchronized void start() {  
                            if (daemon == null) {  
                                daemon = new Thread(this);  
                                daemon.start();  
                            }  
                        }  
                    
                    

                    Das daemon ist als protected Thread daemon definiert.

                    Darauf hin startet run. Bei run sagst Du:

                      
                        public void run() {  
                            Thread.currentThread().setPriority(Thread.MIN_PRIORITY);  
                            repaint();  
                        }  
                    
                    

                    Das repaint ruft die update-Methode aller Komponenten des JApplets auf, welche Du nicht weiter definierst. Das bewirkt, einmalig aufgerufen, gar nicht viel.

                    Je nach Implementation hast Du nun Glück, dass der Thread-Start bei start die vorher bei init gestartete Endlosschleife unterbricht, bei einigen (Opera) eben nicht.

                    Workaround:
                    Nimm den Aufruf insert1() aus init komplett raus und starte die Endlosschleife in run:

                      
                        public void run() {  
                            Thread.currentThread().setPriority(Thread.MIN_PRIORITY);  
                            insert1();  
                        }  
                    
                    

                    viele Grüße

                    Axel

                    1. Hallo,

                      fantastisch! Jetzt funktioniert's überall.

                      Zwei Fragen hätte ich jetzt noch (die könnten aber evtl. als neues Thema gepostet werden).
                      Ich hab auf meiner Website Popup-Menüs, die sich beim Überfahren eines Links öffnen. Diese Menüs werden nun aber durch das eingebundene Object überdeckt. (Eigentlich sollte es genau umgekehrt sein). Kann man das irgendwie beeinflussen bzw. korrigieren?

                      Während des Ladevorgangs eines Java-Applets erscheint normalerweise immer das (animierte) Java-Logo. Bei meinem Applet tut sich während des Ladevorgangs aber nichts. Muss man - damit dieses Logo erscheint - einen zusätzlichen Code einbauen oder woran liegt das?

                      Also, noch einmal ein großes Dankeschön!

                      Viele Grüße,
                      Matze

                      1. Hallo,

                        Zwei Fragen hätte ich jetzt noch (die könnten aber evtl. als neues Thema gepostet werden).
                        Ich hab auf meiner Website Popup-Menüs, die sich beim Überfahren eines Links öffnen. Diese Menüs werden nun aber durch das eingebundene Object überdeckt. (Eigentlich sollte es genau umgekehrt sein). Kann man das irgendwie beeinflussen bzw. korrigieren?

                        Soweit ich weiß nicht in allen Browsern.

                        Im IE, indem man ein IFRAME-Element absolut über dem Applet positioniert und dieses als Untergrund für das Element benutzt, welches das Applet überlagern soll. Das Element muss dabei nicht _im_ IFRAME stehen, es muss nur per position:absolute das IFRAME-Element überlagern, welches wiederum das Applet überlagert.

                        Für Gecko-Browser muss man das IFRAME-Element per JavaScript erst dann einblenden, wenn das Applet schon gerendert ist.

                        Für Opera (und viele andere Browser) weiß ich keine Lösung. Du kannst aber mal nach "div over flash" oder "layer over flash" googlen. Das ist das selbe Problem.

                        Während des Ladevorgangs eines Java-Applets erscheint normalerweise immer das (animierte) Java-Logo. Bei meinem Applet tut sich während des Ladevorgangs aber nichts. Muss man - damit dieses Logo erscheint - einen zusätzlichen Code einbauen oder woran liegt das?

                        Das Logo erscheint _nach_ init() und _bis_ das Applet selbst etwas darstellt. Da bei Dir im Init per setComponents() sofort etwas dargestellt wird, siehst Du das Logo nicht. Im Übrigen hat das auch eine bestimmte Größe. In Applets mit Höhe 20px würdest Du es ohnehin nicht sehen.

                        viele Grüße

                        Axel

      2. Nachtrag:
        Ich bitte um Entschuldigung. Eine Sache war eben etwas zu undeutlich:

        Es gibt zwei Ordner namens META-INF mit einer Manifest.mf und ein Ordner inputbox mit einer Datei InputBox.class.

        Natürlich gibt es insgesamt nur ZWEI Ordner. Der eine heißt META-INF der andere inputbox.

        Sorry,
        Matze