Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Comunicazione tra Applet non funziona più

    Tempo fa avevo inserito in una stessa pagina html 3 Applet, che chiamerò Prima, Seconda e Terza, e l'ultima doveva richiamare un metodo della prima. Il tutto funzionava perfettamente, ma ora, testando con firefox 3.5.3 su Fedora 11, la cosa non va più.

    Ecco parte del codice della Terza Applet:

    Applet a=getAppletContext().getApplet("Prima");
    if ((a!=null)/*&&(a instanceof Prima)*/)
    {
    System.out.println("Trovata Prima");
    ((Prima)a).mioMetodo();
    }
    }
    Funziona perfettamente se eseguo

    cd /path_dei_files_class && firefox pagina_che_contiene_l_applet.html

    mentre se digito


    cd /path_dei_files_class && cd .. && firefox ultimo_livello_path/pagina_che_contiene_l_applet.html


    ottengo l'errore:

    Trovata Prima
    java.lang.ClassCastException: Prima cannot be cast to Prima
    at Terza.init(Terza.java:23)
    at sun.applet.AppletPanel.run(AppletPanel.java:436)
    at java.lang.Thread.run(Thread.java:636)


    Capite bene che, in una normale Applet eseguita in una pagina web, è impossibile che il path corrente corrisponda alla locazione dei files class, per cui la cosa non funziona mai.



    Vuol dire che non è più possibile far comunicare due applet nella stessa pagina?

    O bisogna modificare il codice in qualche modo?


    Grazie

    Marco

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Comunicazione tra Applet non funziona più

    Originariamente inviato da JohannesBrahms
    Vuol dire che non è più possibile far comunicare due applet nella stessa pagina?

    O bisogna modificare il codice in qualche modo?
    A livello di ricerca della applet, quello che conta è che ci siano le tue <applet> ognuna con l'attributo name che indica il nome. Se le tre applet vengono eseguite correttamente nella pagina e tu ricerchi il nome corretto che è presente tra le applet .... non vedo problemi.

    Dove sta fisicamente la pagina e dove stanno le classi (in jar? in file .class "sfusi"?) e messe dove in relazione anche al "codebase", questo centra solo con il caricamento delle classi .... che la JVM ovviamente deve trovare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Comunicazione tra Applet non funziona più

    A livello di ricerca della applet, quello che conta è che ci siano le tue <applet> ognuna con l'attributo name che indica il nome. Se le tre applet vengono eseguite correttamente nella pagina e tu ricerchi il nome corretto che è presente tra le applet .... non vedo problemi.
    Ci sono, tanto è vero che se firefox viene lanciato dal path dei files class funzionatutto.

    Dove sta fisicamente la pagina e dove stanno le classi (in jar? in file .class "sfusi"?) e messe dove in relazione anche al "codebase", questo c'entra solo con il caricamento delle classi .... che la JVM ovviamente deve trovare.
    Files class sfusi, tutti nello stesso path del file html. La parte codebase="." potrebbe ovviamente essere tolta, ma non cambierebbe nulla. L'applet viene vista correttamente (Applet a=getAppletContext().getApplet("Prima") non ritorna null), ma viene impedito il cast, e quindi quando Terza tenta di eseguire i metodi di Prima solleva un'eccezione (Prima cannot be cast to Prima).
    E, tanto per capirci, gli esempi di comunicazione tra Applet che si trovano in rete (non so se posso postare il link) mi danno lo stesso problema.

    <html>

    <head>

    <title>Applet</title>

    </head>

    <body >

    <applet codebase="." code="Prima.class" name="Prima" width=400 height=100>
    </applet>
    <applet code="Seconda.class" codebase="." archive="Seconda.jar" name="Seconda" width=100 height=100></applet>

    <applet code="Terza.class" codebase="." name="Terza" width=50 height=50></applet>

    </body></html>

  4. #4

    Re: Re: Re: Comunicazione tra Applet non funziona più

    L'applet viene vista correttamente (Applet a=getAppletContext().getApplet("Prima") non ritorna null), ma viene impedito il cast, e quindi quando Terza tenta di eseguire i metodi di Prima solleva un'eccezione (Prima cannot be cast to Prima).
    E, tanto per capirci, gli esempi di comunicazione tra Applet che si trovano in rete (non so se posso postare il link) mi danno lo stesso problema.
    Ho fatto un test su Windows con java di SUN (1.6), e funziona tutto come dovrebbe.
    Sembra proprio un bug di openjdk...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.