Come faccio a far funzionare una semplice applet Java Hello World in un browser in Mac OS X?


Sto usando Java SE 1.6 su Mac OS X 10.5.6. Il codice per la mia applet è il seguente:

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 );
    }

}

Ho compilato questo in un .classe file. Il codice per il mio file HTML è il seguente:

<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>

Se eseguo l'applet con appletviewer, funziona bene. Tuttavia, se apro il file HTML in un browser, viene visualizzato un quadrato per lo spazio dell'applet, ma l'applet non viene caricata. (Il " Il tuo browser sta ignorando il tag applet."non appare neanche.) La barra di stato del browser mostra due messaggi: Applet HelloWorld notloaded e Caricamento dell'applet Java non riuscito...{[12] } Ho provato l'applet con Firefox 3.0.6, Safari 3.2.1 e Opera 9.6.3. Nessuno di loro poteva caricare l'applet.

Se provo ad aprire l'HTML per una delle applet dimostrative Java in /Developer/Examples/Java/Applet, viene caricato correttamente in tutti e tre i browser.

C'è qualcosa che mi manca qui, nel tentativo di far caricare questa semplice applet in un browser?

Author: lpapp, 2009-02-06

9 answers

Non si specifica una proprietà codebase nel tag applet, quindi immagino che la tua classe non possa essere trovata.

Provare ad abilitare la finestra di output della console java. Puoi farlo in "Impostazioni Java" (usa spotlight) nella scheda Opzioni estese (quella con l'albero e molte caselle di controllo). Forse puoi vedere qualche altra informazione (come ClassNotFoundException) lì. Impostare l'impostazione su "Abilita / Mostra console". Quindi dovrebbe apparire quando si avvia l'applet.

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

Sfortunatamente Apple ha deciso di rilasciare solo una VM a 64 bit per Java 6 su OS X. L'implicazione di ciò è che i browser devono essere collegati come app a 64 bit. In questo momento, nessuno di loro lo fa (per quanto ne so). Quindi la soluzione "facile" è usare Java 5 per le applet che è possibile configurare nell'applicazione Java Preferences.

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

Phil, Il commento sulla base di codice di dhiller ha innescato qualcosa che ha funzionato per me. Se metti il " HelloWorld.class" file nella stessa cartella del file HTML, quindi imposta il tag dell'applet su: < applet code="HelloWorld.class" codebase="." align="baseline" height="300" width="300" >, quindi apri il file HTML con il tuo browser, dovrebbe funzionare. E ' stato il mio. Il codebase ="." indica al browser che il codice dell'applet si trova nella stessa cartella del file HTML. Il caricamento dell'applet non riesce perché il browser apparentemente non sa dove si trova il codice della classe.

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

Ecco la tua risposta

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

Sostituisci il nome del pacchetto con il tuo pacchetto..

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

Non sono un esperto di programmazione Web, ma penso che il tag applet non sia standard. Devi usare il tag oggetto con il classid corretto per inserire un'applet (o praticamente qualsiasi cosa).

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

Non stai dando all'apllet un contenitore ecc. Ecco un esempio HelloWorld applet:

/*
  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

Grazie per tutte le vostre risposte. Alcuni di loro mi hanno indicato nella giusta direzione per capire la fonte del problema.

Ho attivato la console Java nelle Preferenze Java. Quando ho eseguito di nuovo l'applet, il seguente output è quello che ho ricevuto:

Plug-in Java 1.5.0
Utilizzo di JRE versione 1.5.0_16 Java HotSpot(TM) Client VM
Plugin MRJ per Mac OS X v1. 0. 1
[avvio di Java Applet Security @ Ven Feb 06 23: 47: 20 CST 2009]
Java.lang.UnsupportedClassVersionError: numero di versione errato in .file di classe
a java.lang.classloader.defineClass1 (Metodo nativo)
a java.lang.classloader.defineClass(ClassLoader.java:675)
a java.sicurezza.SecureClassLoader.defineClass(SecureClassLoader.java:124)
al sole.applet.AppletClassLoader.findClass(AppletClassLoader.java:177)
a java.lang.classloader.loadClass(ClassLoader.java:316)
a sole.applet.AppletClassLoader.loadClass(AppletClassLoader.java:119)
a java.lang.classloader.loadClass(ClassLoader.java:251)
al sole.applet.AppletClassLoader.loadCode (AppletClassLoader.java:605)
al sole.applet.Pannello applet.createApplet(Pannello applet.java:723)
al sole.plugin.AppletViewer.createApplet(AppletViewer.java:1864)
al pec.AppletFramePanel.createApplet(AppletFramePanel.java:189)
a sole.applet.Pannello applet.runLoader (AppletPanel.java:652)
al sole.applet.Pannello applet.esegui (AppletPanel.java:326)
al pec.AppletFramePanel.esegui (AppletFramePanel.java:176)
a java.lang.Thread.esegui (Thread.java:613)

Ho installato Java SE 1.6 sul mio Mac, ma immagino che non abbia installato un plug-in 1.6. Inoltre, sembra come se .classe i file vengono timbrati con un numero di versione quando vengono creati. Ho compilato quell'applet con la versione 1.6, ma ho provato a eseguirlo con un 1.5 plug-in, con conseguente UnsupportedClassVersionError. Ho ri-compilato l'applet con la versione 1.5 e ho provato a eseguirlo di nuovo in tutti e tre i browser. Ha funzionato come un fascino.

Qualcuno sa se un plug-in 1.6 è in lavorazione?

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

Non inserire citazioni intorno al nome della classe nel file HTML. Ogni volta che metto citazioni, l'applet non funziona mai per me. :)

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

Solo una nota. Questo thread mi ha aiutato a mettermi in pista, quindi vorrei solo aggiungere una nota utile. 9 Agosto 2010.

In Mac OS X 10.5.8 Leopard la versione di Java utilizzata è controllata da un'app nel percorso Mac HD/Applications/Utilities / Java Preferences

Che potrebbe essere stato precedentemente denominato Impostazioni Java? La versione di Java utilizzata per un'app desktop non deve essere la stessa utilizzata in un browser. Stavo avendo un problema nel lanciare Portecle (dalla riga di comando) - era segnalazione di un " Numero di versione errato in .file di classe".

Ad agosto 2010 la sequenza Java predefinita di Mac OS X 10.5.8 è:

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

Apparentemente l'app Java che stavo cercando di caricare aveva bisogno di Java SE 6 a 64 bit, perché il trascinamento di Java SE 6 in cima a quell'elenco ha risolto immediatamente il problema e Portecle era avviabile dopo di che dalla riga di comando o con un doppio clic o portecle.vaso. (evviva)

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