Newsgroup: it.comp.java
Titolo: Applet: chi trova l'errore è bravo

Ho provato a caricare il seguente applet con AppletViewer ma il messaggio
ottenuto è stasto:
"Start: applet not initialized".
L'applet dopo l'esecuzione dovrebbe visualizzare un pulsante e, se il
pulsante viene premuto, farà altre cose che ora non è importante
specificare.
Dovrebbero esserci dei problemi nel metodo init, ma non riesco a capire
quale sia il problema.
Spero tanto che qualcuno possa aiutarmi!
Riporto di seguito sia il codice sorgente dell'applet che il file html.
Grazie per avermi dedicato una parte del vostro tempo.
Ciao,ciao.
/*
* @(#) DeviceGUI.java 0.9beta Gennaio 1997 - by Donato Cappetta
*/
package device.client;
import java.net.*;
import java.io.*;
import java.awt.*;
import device.server.ID_Message;
/**
* Superclasse interfaccia grafica utente per il controllo di
* un dispositivo elettronico.<br>
* La classe implementa i metodi necessari per una
* connessione client-server.
* @see java.lang.Object
* @version 0.9beta Gennaio 1997
* @author Donato Cappetta
*/
public class DeviceGUI extends Frame implements ID_Message {
/**
* Se la connesione va a buon fine viene settata connectOk.
*/
private boolean isConnect = false;
/**
* Socket per I/O di rete.
*/
private Socket socket = null;
/**
* Indirizzo url della risorsa ControllableDevice da gestire.
*/
private String urlString = null;
/**
* Porta riservata alla risorsa ControllableDevice;
*/
private int port = 4444;
/**
* Stream per i dati di input.
*/
protected ObjectInputStream is = null;
/**
* Stream per i dati di output.
*/
protected ObjectOutputStream os = null;
/**
* Area di testo per eventuali messaggi.
*/
protected TextArea ta = null;
/**
* Barra del menu per eventuali menu.
*/
protected MenuBar mb = null;
/**
* Oggetto per i dati in input.
*/
protected Object objInput = null;
/**
* Oggetto per i dati di output.
*/
protected Object objOutput = null;
/**
* Il costruttore crea un layout a bordi con un'area di testo
* a 'sud'
*/
public DeviceGUI() {
this.setLayout(new BorderLayout());
mb = new MenuBar();
ta = new TextArea(2,20);
ta.setEditable(false);
this.add("South", ta);
ta.setText("DeviceGUI v.0.9 - Gennaio 1997 by Donato Cappetta ");
} //end costruttore DeviceGUI()
/**
* Metodo che inizializza l'url e la porta con cui stabilire la connesione.
* @param urlString Stringa URL del dispositivo elettronico da controllare.
* @param port Porta a cui il client si deve connettere per ottenere il
servizio.
*/
public void init(String urlString, int port) {
this.urlString = urlString;
this.port = port;
}
/**
* Metodo che si occupa della connesione con il server.
* Crea un nouvo socket con i paramenti url, port e associa
* gli stream di I/O del socket a is e os.
*
* @Exception UnknownHostException se l'Host e sconosciuto.
* @Exception IOException errore nella creazione degli stream di I/O.
*/
private void connect() throws UnknownHostException, IOException {
try {
ta.setText("Connect to: " + urlString + ":" + port);
ta.append( "Attendere ...");
socket = new Socket(urlString, port);
isConnect = true;
os = new ObjectOutputStream(socket.getOutputStream());
try {
is = new ObjectInputStream(socket.getInputStream());
} catch(StreamCorruptedException sce) {
throw sce;
} catch (IOException ioe) {
throw ioe;
}
} catch(UnknownHostException uhe) {
throw uhe;
} catch(IOException ioe) {
throw ioe;
}
} //end connect()
/**
* Metodo che si occupa di disconnettere.
* Chiude gli stream di I/O e il socket.
* @Exception IOException eccezione durante la disconnesione.
*/
private void disconnect() throws IOException {
try {
ta.append( "Disconnect !!");
is.close();
os.close();
socket.close();
isConnect = false;
} catch(IOException ioe) {
throw ioe;
}
} //end disconnect
/**
* Metodo che tenta la connesione con il server.
* Se la connesione va a buon fine e il dispostivo e
* disponibile per il controllo ritorna 'true'.
* @param stringDevice Nome del dispostivo da controllare.
* @return 'true' o 'false' se il disposito e disponibile o meno per
* il controllo.
*/
public boolean startDevice(String stringDevice) {
String stringIn = null;
byte ID_Input;
try {
this.connect();
} catch(UnknownHostException uhe) {
ta.append( "Host sconosciuto: " + uhe.getMessage());
return false;
} catch (IOException ioe) {
ta.append( "Eccezione di I/O con il server: " + ioe.getMessage());
return false;
} catch (Exception e) {
ta.append( "Eccezione con il server: " + e.getMessage());
return false;
}
//se la connesione va a buon fine
//attende il byte di acknowledgment
try {
ID_Input = is.readByte();
if (ID_Input == ID_ACK) {
ta.append( "Acknowledgment ok ! ");
} else {
//ritorna
ta.append( "Errore di Acknowledgment--> " + ID_Input);
return false;
}
//invia stringa che rappresenta il dispositivo da controllare
ta.append( "Dispositivo da controllare -->" + stringDevice);
os.writeUTF(stringDevice);
os.flush();
} catch(IOException e){
ta.append( "Problemi di connessione ...");
return false;
}
//attende una risposta di ok o stop dal server.
try {
ID_Input = is.readByte();
stringIn = is.readUTF();
} catch(IOException ioe){
ta.append( "Problemi di connessione ...");
return false;
}
//analizza la risposta
switch(ID_Input) {
case(ID_OKDEVICE):
ta.append( "Dispositivo Ok --> " + stringIn);
return true;
case(ID_EXCEPTION):
ta.append( "Eccezione dal dispositivo --> " + stringIn);
return false;
case(ID_STOP):
ta.append( "Stop --> " + stringIn);
return false;
default:
ta.append( "Comando sconosciuto -->" + stringIn);
return false;
} //end switch()
} //end startDevice()
/**
* Metodo che chiude la connessione con il server e rilascia il
* dispositivo
*/
public void stopDevice() {
try {
this.disconnect();
} catch (IOException ioe) {
// ta.append('\n'+ "Eccezione di I/O durante la disconnesione: " +
ioe.getMessage());
} catch (Exception e) {
// ta.append('\n'+ "Eccezione durante la disconnessione: " +
e.getMessage());
}
} //end stopDevice()
protected void processEvent(AWTEvent event) {
if (event.getID() == Event.WINDOW_DESTROY) {
if (isConnect) {
try {
this.disconnect();
} catch(IOException ioe) {}
}
dispose();
}
super.processEvent(event);
} //end handleEvent()
} //end class DeviceGUI.
<HTML>
<HEAD>
<TITLE>AppletGUI</TITLE>
</HEAD>
<P>
Cliccando sul pulsante un'applet carica una classe il cui nome le viene
passato come parametro dalla pagina HTML.
</P>
<P><APPLET CODE="AppletGUI.class" WIDTH=250 HEIGHT=60 NAME="AppletGUI">
<PARAM NAME = "portId" VALUE = "4444">
<PARAM NAME = "classGUI" VALUE = "IeeeVxiGUI">
<PARAM NAME = "titleGUI" VALUE = "PannelloVXI">
<PARAM NAME = "buttonText" VALUE = "Apri pannello">
<B>
<FONT COLOR="#FF0000">
Qui si vedrebbe un applet, se il browser supportasse Java.
</FONT></B>
</APPLET></P>
</BODY>
</HTML>

"Start: applet not initialized".
Il sorgente che hai postato non compila; puoi ripostarlo magari come
allegato?
Eventualmente allega anche le classi che usi dal package
device.server.*; 
Se vuoi che il tutto giri come Applet la tua classe pubblica
DeviceGUI() deve estendere Applet e non Frame;
Il metodo init() di un Applet non prende parametri, se ne scrivi uno
con parametri non verrà mai chiamato dal browser.
Un applet si può connettere soltanto all host da cui è stata
scaricata, per individuarne l'URL usa getCodeBase();
Come vedi di pasticci ce ne sono vari, non mi rimane che augurarti
buon lavoro...
Ciao,
Maurizio.
--------
La forza di gravità è un falso mito, la Terra succhia!

 /**
Questo e' il tuo errore .....
la tua classe con l'init deve estendere java.applet.Applet..... ti conviene
togliere l'init() da questa classe e farne una aggiuntiva.
del tipo:
public class MiaApplet extends java.applet.Applet
{
  public void init()
  {
    new DeviceGUI();
   }
}
se fai cosi' il tutto ti funziona e non devi modificare piu di tanto il
codice .... basta chew l'init in DeviceGUI lo chiami in un'altra maniera e
magari poi lo richiami nel costruttore ..... o vedi un po' tu.... tutto
chiaro?
--
Fabrizio Marini
Company Partner
K-Tech S.r.l.
Via Tibullo, 13
00193 - Rome (RM) - Italy
http://www.k-tech.it
Phone: +39 (0) 6 68301467
E-mail: 
f.ma...@k-tech.it
 / 
fabry....@mclink.it

 ha scritto nel messaggio
news:3b23187...@news.aruba.it...


 ha scritto nel messaggio
news:9fv6cc$k1o$1...@news.mclink.it...


Alla riga 57 dell'applet AppletGUI che ti ho finalmente inviato c'è il
termine "init()" che non dovrebbe esserci.
Nella tua valutazione non tenerne conto.
Grazie ancora e ciao.

