Comment puis-je faire fonctionner une simple applet Java Hello World dans un navigateur sous Mac OS X?


J'utilise Java SE 1.6 sur Mac OS X 10.5.6. Le code de mon applet est le suivant:

import java.awt.Graphics;
import javax.swing.JApplet;

public class HelloWorld extends JApplet {

    public void paint( Graphics g ) {
            super.paint( g );
            g.drawString( "Hello World!", 25, 25 );
    }

}

J'ai compilé ceci en .classe fichier. Le code de mon fichier HTML est le suivant:

<html>

<head>
    <title>Hello World</title>
</head>

<body>
    <applet code="HelloWorld.class" height="300" width="300">
            Your browser is ignoring the applet tag.
    </applet>
</body>

</html>

Si j'exécute l'applet avec appletviewer, cela fonctionne bien. Cependant, si j'ouvre le fichier HTML dans un navigateur, un carré apparaît pour l'espace de l'applet, mais l'applet ne se charge pas. (Le " Votre navigateur ignore la balise applet."n'apparaît pas non plus.) La barre d'état du navigateur affiche deux messages: Applet HelloWorld notloaded et Le chargement de l'applet Java a échoué... J'ai essayé l'applet avec Firefox 3.0.6, Safari 3.2.1 et Opera 9.6.3. Aucun d'entre eux ne pouvait charger l'applet.

Si j'essaie d'ouvrir le code HTML pour l'une des applets de démonstration Java dans /Developer/Examples/Java/Applets, il se charge correctement dans les trois navigateurs.

Y a-t-il quelque chose qui me manque ici, en essayant de charger cette applet simple dans un navigateur?

Author: lpapp, 2009-02-06

9 answers

Vous ne spécifiez pas de propriété de base de code dans la balise applet, donc je suppose que votre classe est introuvable.

Essayez d'activer la fenêtre de sortie de la console java. Vous pouvez le faire dans "Paramètres Java" (utilisez spotlight) sous l'onglet Options étendues (celui avec l'arborescence et de nombreuses cases à cocher). Peut-être que vous pouvez voir plus d'informations (comme ClassNotFoundException) là-bas. Réglez le paramètre sur "Activer / Afficher la console". Ensuite, il devrait s'afficher lorsque vous démarrez l'application.

 2
Author: Daniel Hiller, 2009-02-06 04:41:42

Malheureusement, Apple a décidé de ne publier qu'une machine virtuelle 64 bits pour Java 6 sur OS X. L'implication de cela est que les navigateurs doivent être liés en tant qu'applications 64 bits. Pour le moment, aucun d'entre eux ne le fait (pour autant que je sache). La solution "facile" consiste donc à utiliser Java 5 pour les applets que vous pouvez configurer dans l'application Java Preferences.

 2
Author: Guðmundur Bjarni, 2009-02-06 09:18:47

Phil, le commentaire sur la base de code par dhiller a déclenché quelque chose qui a fonctionné pour moi. Si vous mettez le " HelloWorld.class " dans le même dossier que votre fichier HTML, puis définissez votre balise applet sur: < applet code="HelloWorld.class" codebase="." align="baseline" height="300" width="300" >, puis ouvrez le fichier HTML avec votre navigateur, cela devrait fonctionner. Le mien fait. Le codebase ="." indique au navigateur que le code de l'applet se trouve dans le même dossier que le fichier HTML. Le chargement de l'applet échoue car le navigateur ne sait apparemment pas où se trouve le code de classe.

 1
Author: Jeff Jensen, 2010-05-14 21:53:34

Voici votre réponse

<html>
   <applet code="packagename.HelloWorld.class" height="300" width="300">
</html>

Remplacez le nom du paquet par votre paquet..

 1
Author: Java D, 2013-05-08 06:48:51

Je ne suis pas un expert en programmation Web, mais je pense que la balise applet n'est pas standard. Vous devez utiliser la balise object avec le classid approprié pour insérer une applet (ou à peu près n'importe quoi).

 0
Author: pyon, 2009-02-06 04:29:58

Vous ne donnez pas à l'aplet un conteneur, etc. pour s'afficher. Voici un exemple d'applet HelloWorld :

/*
  File.......: MyHello_JApplet.java
  Description: Basic JApplet example.  (Run by a browser.)
  Programmer.: Michael Thomas
  Date.......: Updated 09/09/01, Orig 09/09/01

*/
import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Container;
import java.awt.Color;

public class MyHello_JApplet extends JApplet {

  public void init() {
    Container objContainer = super.getContentPane();
    objContainer.setBackground( Color.white );
  }
  public void paint(Graphics g) {
    g.drawString("Hello World from JApplet (Swing - JApplet).",10,25);
  }
}
 0
Author: Charlie Martin, 2009-02-06 04:55:31

Merci pour toutes vos réponses. Certains d'entre eux m'ont pointé dans la bonne direction pour comprendre la source du problème.

J'ai activé la console Java dans les préférences Java. Lorsque j'ai exécuté à nouveau l'applet, la sortie suivante est ce que j'ai reçu:

Plug-in Java 1.5.0
En utilisant JRE version 1.5.0_16 Java HotSpot (TM) Client VM
Il s'agit de la version 1.0.1 du plugin MRJ pour Mac OS X
[démarrage de Java Applet Security @ Ven Fév 06 23: 47: 20 CST 2009]
Java.lang.UnsupportedClassVersionError: Mauvais numéro de version dans .fichier de classe
à java.lang.Chargeur de classe.defineClass1 (Méthode native)
à java.lang.Chargeur de classe.defineClass (ClassLoader.java: 675)
à java.sécurité.SecureClassLoader.defineClass (SecureClassLoader.java:124)
au coucher du soleil.applet.AppletClassLoader.findClass (AppletClassLoader.java:177)
à java.lang.Chargeur de classe.loadClass (Chargeur de classe.java: 316)
à soleil.applet.AppletClassLoader.loadClass(AppletClassLoader.java:119)
à java.lang.Chargeur de classe.loadClass (Chargeur de classe.java:251)
au coucher du soleil.applet.AppletClassLoader.loadCode(AppletClassLoader.java: 605)
au coucher du soleil.applet.AppletPanel.createApplet(AppletPanel.java: 723)
au coucher du soleil.plugin.AppletViewer.createApplet(AppletViewer.java:1864)
chez jep.AppletFramePanel.createApplet(AppletFramePanel.java:189)
à soleil.applet.AppletPanel.runLoader(AppletPanel.java: 652)
au coucher du soleil.applet.AppletPanel.exécuter (AppletPanel.java: 326)
chez jep.AppletFramePanel.exécuter (AppletFramePanel.java:176)
à java.lang.Fil.exécuter (Thread.java: 613)

J'ai installé Java SE 1.6 sur mon Mac, mais je suppose qu'il n'a pas installé de plug-in 1.6. En outre, il semble que .les fichiers de classe sont estampillés d'un numéro de version lorsqu'ils sont créés. J'ai compilé cette applet avec la version 1.6, mais j'ai essayé de l'exécuter avec un 1.5 plug-in, ce qui entraîne la UnsupportedClassVersionError. J'ai re-compilé l'applet avec la version 1.5 et j'ai essayé de l'exécuter à nouveau dans les trois navigateurs. A travaillé comme un charme.

Quelqu'un sait-il si un plug-in 1.6 est en préparation?

 0
Author: Phillip Lemky, 2009-02-07 06:46:55

Ne mettez pas de guillemets autour de votre nom de classe dans le fichier HTML. Chaque fois que je mets des citations, l'applet ne fonctionne jamais pour moi. :)

 0
Author: ra4king, 2010-11-16 00:06:02

Juste une remarque. Ce fil m'a aidé à me mettre sur la bonne voie, donc je voudrais juste ajouter une note utile. 9 août 2010.

Dans Mac OS X 10.5.8 Leopard, la version de Java utilisée est contrôlée par une application dans le chemin Mac HD/Applications/Utilities / Java Preferences

Qui peut avoir été anciennement nommé Paramètres Java? La version de Java utilisée pour une application de bureau ne doit pas nécessairement être la même que celle utilisée dans un navigateur. J'avais un problème pour lancer Portecle (à partir de la ligne de commande) - c'était signaler un " Mauvais numéro de version dans .fichier de classe".

En août 2010, la séquence Java par défaut de Mac OS X 10.5.8 est:

  • J2SE 5.0.......32 bits
  • J2SE 5.0.......32 bits
  • Java SE 6.....64 bits
  • J2SE 5.0.......64 bits
  • J2SE 1.4.2 ...32 bits

Apparemment, l'application Java que j'essayais de charger avait besoin de Java SE 6 64 bits, car faire glisser Java SE 6 en haut de cette liste a instantanément résolu le problème et Portecle a été lancé après cela, à partir de la ligne de commande ou avec un double-clic ou portecle.pot. (hourra)

 0
Author: Dave Nathanson, 2012-12-15 10:34:30