PDA

View Full Version : [JAVA] problema con APPLETVIEWER


franpic
26-05-2011, 12:27
Buon giorno a tutti,

ho creato delle applet java e ovviamente con eclipse mi partono.
Volendo provare con appletviewer però no, tantomeno in vari browser.

vi posto il codice della pagina html:
<P>Questa è la mia <I>prima APPLET</I></P>
<APPLET CODE="..\..\workspace\Applet\bin\AppletAuto.class" WIDTH=300 HEIGHT=300>Per la visualizzazione di questa applet hai necessità di aggiornare il tuo browser</APPLET>

e quì quello della classe:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.Point2D;
import java.awt.geom.Line2D;
import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;

public class AppletAuto extends Applet{
public void paint(Graphics g) {
//ristabilisce il riferimento a Graphics2D
Graphics2D g2 = (Graphics2D)g;

//Costruisce la carrozzeria centrale
final int X_CENTRALE = (getWidth()/2) - 30;
final int Y_CENTRALE = (getHeight()/2) - 5;
final int LUNGHEZZA = 60;
final int ALTEZZA = 10;
Rectangle centrale = new Rectangle(X_CENTRALE, Y_CENTRALE, LUNGHEZZA, ALTEZZA);

//Costruice le 2 ruote
Ellipse2D.Double ruota1 = new Ellipse2D.Double((X_CENTRALE + 10), (Y_CENTRALE + 10), 10, 10);
Ellipse2D.Double ruota2 = new Ellipse2D.Double((X_CENTRALE + 40), (Y_CENTRALE + 10), 10, 10);

//Costruisce la parte superiore
Point2D.Double p1 = new Point2D.Double(X_CENTRALE + 10, Y_CENTRALE);
Point2D.Double p2 = new Point2D.Double(X_CENTRALE + 20, Y_CENTRALE - 10);
Point2D.Double p3 = new Point2D.Double(X_CENTRALE + 40, Y_CENTRALE - 10);
Point2D.Double p4 = new Point2D.Double(X_CENTRALE + 50, Y_CENTRALE);
Line2D.Double l1 = new Line2D.Double(p1, p2);
Line2D.Double l2 = new Line2D.Double(p2, p3);
Line2D.Double l3 = new Line2D.Double(p3, p4);

//Disegna tutte le parti
g2.draw(l1);
g2.draw(l2);
g2.draw(l3);
g2.draw(centrale);
g2.draw(ruota1);
g2.draw(ruota2);

//testo da scrivere
String messaggio = "JavaFrancescoMobile 1.2 ti";

Font fontMoltoGrande = new Font("Sans-Serif",Font.PLAIN, 18);
g2.setFont(fontMoltoGrande);
g2.setColor(Color.black);

//misurare una stringa tramite l'oggetto TextLayout
//dopo aver convertito g2 in un oggetto di tipo FontRenderContext
FontRenderContext contesto = g2.getFontRenderContext();
TextLayout layout = new TextLayout(messaggio, fontMoltoGrande, contesto);

final float X_INIZIALE = (getWidth() - layout.getAdvance()) / 2;
final float Y_INIZIALE = Y_CENTRALE + 40;

g2.drawString(messaggio, X_INIZIALE, Y_INIZIALE);

}

}


come vedrete nel rapporto della JVM c'è scritto che non trova la classe, può dipendere dal fatto che utilizzo percorsi relativi e non assoluti?


e questo è il report della java virtual machine:
Java Plug-in 1.6.0_25
Uso della versione JRE 1.6.0_25-b06 Java HotSpot(TM) Client VM
Directory principale utente = C:\Users\pic
----------------------------------------------------
c: cancella finestra console
f: finalizza oggetti nella coda di finalizzazione
g: recupera spazio
h: visualizza questo messaggio di aiuto
l: esegui dump dell'elenco classloader
m: stampa utilizzo memoria
o: attiva registrazione eventi
q: nascondi console
r: ricarica configurazione criteri
s: esegui dump delle proprietà del sistema e dell'installazione
t: esegui dump dell'elenco thread
v: esegui dump dello stack del thread
x: cancella cache classloader
0-5: imposta livello di traccia su <n>
----------------------------------------------------


caricamento: classe ..\..\workspace\Applet\bin\AppletAuto.class non trovata.
java.lang.ClassNotFoundException: ......workspace.Applet.bin.AppletAuto.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Eccezione: java.lang.ClassNotFoundException: ......workspace.Applet.bin.AppletAuto.class

PGI-Bis
26-05-2011, 13:47
Di norma è l'IDE che si occupa di questi dettagli (specialmente se l'ide è netbeans) comunque il valore dell'attributo "code" è il nome pienamente qualificato della classe che definisce l'applet. Nel tuo caso sarebbe:

code="AppletAuto"

Se, come di solito si fa, usi un jar per impacchettare le classi e le risorse del tuo programma, allora dovrai anche specificare l'attributo archive:

archive="il percorso del file .jar relativo alla pagina html che presente l'applet"

Per essere un po' più concreti, immaginando che il programma sia impacchettato nel file programma.jar e che questo file si trovi nella stessa directory della pagina html:

/applet.html
/programma.jar

la pagina html sarebbe:

<html>
<body>
<applet code="AppletAuto" width="300" height="300" archive="programma.jar"></applet>
</body>
</html>

franpic
26-05-2011, 15:55
mi può anche star bene, ammesso che sia l'unica maniera, perchè, il file ce l'ho in locale, in una cartella diversa dalla pagina html e non l'ho impacchettato in un jar, e preferivo lasciare la situazione così; ma se non c'è alternativa.....

Grazie mille, comunque

franpic
26-05-2011, 16:16
Ti ringrazio ancora, con le tue direttive mi funziona tutto