Newsgroup: it.comp.java
Titolo: [lunghetto] NoClassDefFound


ICQ#170836495
_,,=~°°~=,,_,,=~°°~=,,_

 </APPLET>
Premesso che il tag applet è deprecato in HTML, hai provato a mettere il
contenuto di ARCHIVE tra virgolette:
ARCHIVE="c:/Programmi/File
comuni/ParallelGraphics/Cortona/classes.zip,c:/Programmi/File
comuni/ParallelGraphics/Cortona/corteai.zip"   (tutto su un unica linea)
Secondo me quello spazio in mezzo al percorso potrebbe creare problemi. Poi
ho letto che l'attributo ARCHIVE deve contenere "a comma-separated list of
URIs" (chiaramente sarebbe meglio usare pecorsi relativi)

 URIs" (chiaramente sarebbe meglio usare pecorsi relativi)
Ho provato anche cosě, ma ancora non ne vuole sapere di andare ... :(
Nella console di Java mi compare 'sto messaggio
java.lang.NoClassDefFoundError: vrml/external/field/EventOutObserver
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:1576)
	at java.lang.Class.getConstructor0(Class.java:1748)
	at java.lang.Class.newInstance0(Class.java:266)
	at java.lang.Class.newInstance(Class.java:249)
	at sun.applet.AppletPanel.createApplet(AppletPanel.java:548)
	at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1621)
	at sun.applet.AppletPanel.runLoader(AppletPanel.java:477)
	at sun.applet.AppletPanel.run(AppletPanel.java:290)
	at java.lang.Thread.run(Thread.java:536)
magari puň servire ... :)
Tra l'altro avevo usato due tag ARCHIVE per un post che avevo visto,
intitolato "NoClassDefFoundError" di Carioni Massimo del 2001-07-30
00:59:48 in cui appunto si accennava al fatto che bastava usare piů
volte tale tag :)
byZ

Potresti provare a mettere i due file zip nella stessa cartella del file
html e mettere nell'archive solo il nome del file anzichè il percorso. Ho
letto che sull'attributo codebase puoi specificare solo delle cartelle che
stanno in gerarchia sotto quella in cui si trova il file html, forse la cosa
vale anche per l'attributo archive.

Il Mon, 10 Nov 2003 20:51:14 GMT, [fadeout] scrisse:

Ho provato con l'attributo archive come dicevi.
Non ho risolto ma sono riuscito a scoprire dove sta il problema.
Innanzi tutto, ho dovuto copiare il contenuto di c:\Programmi\File
comuni\ParallelGraphics\ecc... nella directory dell'applet (non ho capito
perchè non sfruttava gli zip che erano in c:\Programmi\... visto che il
percorso l'avevo messo sia nel CLASSPATH che nell'attributo archive)
In più l'applet fa uso della classe ActiveXControl presente (sul mio sistema
in c:\WINDOWS\Java\Packages\qualcosa.ZIP). Ho dovuto copiare anche
questa nella directory dell'applet (altrimenti mi dava un nuovo
NoClassDefFoundError con com/ms/activeX/ActiveXControl, anche se
anche questo era nella classpath e nel tag archive).
Quindi ho cambiato il tag ARCHIVE dell'applet così
ARCHIVE=./classes.zip,./corteai.zip,./Packages/JXZHFJ1R.ZIP
A questo punto ho scoperto che c'è una NullPointerExcpetion. La parte di
codice incriminata è la seguente
	public void start() {
		if (browser==null)
		for (int i=0; i<20;i++) {
			try	{
				browser=Browser.getBrowser(this);
			} catch (NullPointerException npe)	{
				System.out.println(npe.getMessage());
			}
			if (browser!=null)
				break;
			pause(200);
		}
		//coordPane.setBrowser(browser);
		IndiceSensor indiceSensor=new IndiceSensor();
		Node nodo=browser.getNode("indice");
		nodo.getEventOut("set_translation").advise(indiceSensor, this);
	}
Il nullPointer si verifica a browser.getBrowser(this);
Ho guardato nella doc di Java ma non sono riuscito a trovare niente a
riguardo :(
Che non sia una classe di Java?
Oppure mi sfugge qualcosa?
Grazie ancora
-- 
(¯`·.¸_¸.·´¯`·.¸_¸.·´¯)
  byZ, doGmaI
 
dog...@despammed.com
  ICQ# 170836495
(_¸.·´¯`·.¸_¸.·´¯`·.¸_)

 Oppure mi sfugge qualcosa?
La storia degli zip nella stessa cartella è per motivi di sicurezza, dato
che le applet hanno un ambiente di esecuzione limitato.
Potresti provare ad eseguire l'applet con l'appletviewer anzichè con il
browser, questo potrebbe risolvere alcuni problemi. Inoltre è consigliabile
usare il tag object anzichè il tag applet, per garantire che l'applet sia
eseguita con il plug in della Sun e non con la JVM nativa del Browser.
La classe Browser non fa parte del runtime di Java per cui è sicuramente
all'interno di uno dei tuoi zip (se non ci fosse avresti una eccezione di
classe non trovata e non una null pointer), per cui trovala fuori e vedi un
po' cosa combina il metodo getBrowser.

 po' cosa combina il metodo getBrowser.
L'ho trovata, purtroppo però è già in bytecode e per ora non sono ancora
riuscito a trovare la documentazione di questo plugin. Ne ho trovate di altri,
ma qui la getBrowser ha tre parametri, e se provo a utilizzare quella mi da
errore perchè non trova il metodo.
Cmq mi pare di aver capito che l'errore stia nel fatto che la var Browser (dichiarata com 	
private Browser browser=null;) resta per l'appunto sempre null. Il metodo getBrowser
dovrebbe proprio provvedere a settare il valore della var. ma invece non fa nulla.
Potrebbe dipendere dal fatto che il getBrowser viene fatto nel metodo start?
Ho trovato diverse "pezze" di codice in cui viene usata la getBrowser, tutte
diverse tra loro, e cmq nessuna sembra settare il valore della var
browser.
PS: c'è in giro qualche introduzione alle applet (magari in italiano)? Così
comincio a dare un'occhiata alla struttura delle applet
