PDA

View Full Version : Java su Netscape


Vegale
04-12-2002, 18:11
C'è qualche motivo particolare per cui una mia applet java non funzioni su Netscape versione 4.79 eng su Linux? Solo la mia, le altre applet Java funzionano.

Qua su Explorer funziona benissimo.. non so se la colpa è di quella versione di netscape o di linux..

In pratica nel sorgente ho subito importato le awt.Graphics, ho esteso la classe come Applet e poi nel metodo public void paint(Graphics g) { ho messo tutta la roba che mi serviva per disegnare.
Disegnare, poi, una semplice scritta col metodo g.drawString.. ora come ora non dispongo del sorgente per postarlo..

C'è qualcosa da tener presente?

recoil
04-12-2002, 23:22
ho avuto anche io problemi di applet che magari giravano bene con appletviewer, non con IE e magari bene con Opera...

non so che pensare...

Vegale
10-12-2002, 20:16
Ho letto il messaggio d'errore su Netscape/Linux:
java.lang.ClassFormatError: Bad major version number

Il problema è che ho scoperto che la applet non funziona su molte versioni di Explorer/Windows e su Mac!

Se ho compilato con il jsdk 1.41 e uno possiede una versione precedente della JVM, essa non la carica? Oppure ho sbagliato qualcosa io? Sono un po' newbie in fatto di applet.. :(
Ecco il sorgente di un programma stupido, che non va...

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;

public class RectangleApplet extends Applet {

public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;

Rectangle cerealBox = new Rectangle(5, 10, 20, 30);
g2.draw(cerealBox);

cerealBox.translate(15, 25);
g2.draw(cerealBox);
}
}

C'è qualche problema? ;_;

cn73
11-12-2002, 10:53
Ci sono sempre stati questi problemi, a volte persino un'applet che girava alla perfezione sotto IE4 nelle versioni successive dello ste4sso browser dava molti problemi...

Per quanto riguarda il dicscorso di compilare con un JRE e poi eseguire con un'altra vesione... In teoria bisognerebbe eseguirlo con la stessa identica versione di JVM, in pratica il discorso è un po' diverso...avrai sicuramente notato che certe classi e certi metodi vengono etichettati con frasi tipo "SINCE JDK 1.2"... significa che sono riconoscibili da JVM 1.2 in poi...
Specie nell'uso delle AWT comunque, si riscontrano dei problemi nei cambi di versione, soprattutto in piattaforme diverse... Le awt fanno massiccio uso di chiamate di S.O. per creare e gestire oggetti grafici (per questo sono state sostituite dalle SWING).

La tua applet comunque è davvero semplice, pare effettivamente strano che non giri...qual è la versione della JVM su quella versione di NetScape??

Vegale
11-12-2002, 16:43
Humm.. beh su quella di Netscape/Linux non saprei proprio, dovrei controllare.. ma alcuni miei amici che hanno provato l'applet (che non andava..) avevano solo la JVM di windows, winme per l'esattezza.. e anche la JVM di winxp sp1 non esegue il programma.
Anche installando JRE continua a non funzionare.. solo con jSDK. Simpatica come cosa :) :(

cn73
11-12-2002, 16:45
Insomma Microsoft sta raggiungendo il suo scopo nei confronti di java... renderlo poco portabile...

comunque questa affermazione:
Anche installando JRE continua a non funzionare.. solo con jSDK. Simpatica come cosa mi pare alquanto strana... in jre è parte ntegrante del JDK...

Sicuro che il classpath punti alla corretta JVM??

Vegale
11-12-2002, 17:33
Hm.. strano è strano.
Nella cartella di jSDK ci sono applet di esempio, sotto la cartella demo/plugins. Ho scelto clock e la applet funziona.
Ho copiato il codice sorgente e l'ho compilato col mio java. Risultato?
La stessa applet da me compilata non va.. 8) Dice class not found.

Hmm.. il classpath come si setta? ^_^

Per quanto rigurada JRE, installando solo JRE e non tutto il pacchetto SDK la applet non va.. :/

Vegale
11-12-2002, 17:45
Mi sorge il dubbio, dunque, che compilando con jre1.41, la applet non funzioni su JVM vecchie o di proprietà della Microsoft.. che dici? Sbaglio? :(

cn73
11-12-2002, 17:53
Class not found... ma hai lasciato i .class nella stessa dir o l'jhai cambiata?? com'è il code base nell'HTML??

mi viene il dubbio che tu abbia + versioni del JRE nella tua macchina e che installando il jsdk ti setti bene il path della JVM in automatico...se no ci devi puntare tu.... prova a scrivere un file batc di questo tipo:

SET CLASSPATH=dir che contiene le classi;

SET PATH=dir che continene la JVM

lancialo da una sessione dos e compila....con javac NomeClasse.java

Vegale
11-12-2002, 18:12
Comincio a diventar matto... ho fatto come hai detto tu, ma senza risultato. Invece ho provato a guardare il sorgente HTML dell'applet Clock che ti avevo detto.
Invece del canonico tag <applet code... etc, nella suddetta pagina era presente questa roba:

<OBJECT
classid = "clsid:CAFEEFAC-0014-0001-0000-ABCDEFFEDCBA"
codebase = "http://java.sun.com/products/plugin/autodl/jinstall-1_4_1-windows-i586.cab#Version=1,4,1,0"
WIDTH = 170 HEIGHT = 150 >
<PARAM NAME = CODE VALUE = "RectangleApplet.class" >
<PARAM NAME = "type" VALUE = "application/x-java-applet;jpi-version=1.4.1">
<PARAM NAME = "scriptable" VALUE = "false">
</OBJECT>


E ora va!
Ma te guarda... ;_; Bastava modificare il tag html... damnit.
Vabbé, scusa per averti logorato con le mie domande... ma proprio una cosa del genere non la immaginavo.. :/

cn73
11-12-2002, 19:23
eh si andava a prendersi direttamente i .class sul sito sun :D

Vegale
11-12-2002, 20:35
Ma com'è che 'sta applet non funziona con il tag <applet> mentre altre zi?_?
Ho provato ora, e mi fa scaricare il plugin di java... questo perché non ho installato (infatti l'ho rimosso momentaneamente per prova) il jre 1.41?

cn73
11-12-2002, 20:39
Perchè ha bisogno delle Swing??

PGI
11-12-2002, 21:18
Con il tag <APPLET></APPLET> l'applet viene eseguita con l'interprete java distribuito con il browser. IE, Netscape e compagni contengono una "jvm" compatibile con le versioni java fino alla 1.1.

L'oggetto Graphics2D è presente dalla versione 1.2 in poi e pertanto non viene "capito nativamente" dai browser. Per ovviare alla faccenda sun ha sviluppato un plug-in per browser che viene richiamato dal codice


<OBJECT
classid = "clsid:CAFEEFAC-0014-0001-0000-ABCDEFFEDCBA"
codebase = "http://java.sun.com/products/plugin/autodl/jinstall-1_4_1-windows-i586.cab#Version=1,4,1,0"
WIDTH = 170 HEIGHT = 150 >
<PARAM NAME = CODE VALUE = "RectangleApplet.class" >
<PARAM NAME = "type" VALUE = "application/x-java-applet;jpi-version=1.4.1">
<PARAM NAME = "scriptable" VALUE = "false">
</OBJECT>


Se il plug-in (compatibile con la versione del JDK usato per lo sviluppo dell'applet) si trova sul sistema, l'applet parte utilizzandolo, altrimenti dovrebbe partire una richiesta di download dal sito Sun. Con lo stesso metodo del "plug-in a richiesta" è possibile sviluppare applet che vanno al di là di Java 1.1 che funzioneranno a patto che il "visitatore" sia disposto a sobbarcarsi il download del JRE (che è la stessa cosa fatta da Flash, tanto per intendersi).

Ciao.

Vegale
13-12-2002, 19:33
Già..però il download dle plugin java è un po' più grandicello.. e vabbé :muro: