2011-09-23 12 views
5

Ci sono già molte risorse su questo ma non riesco proprio a farlo funzionare. Che cosa sto facendo di sbagliato? Il file jar e ':Come incorporare un jar in HTML

http://www.alexandertechniqueatlantic.ca/multimedia/AT-web-presentation-imp.jar

E il codice che sto usando per incorporare è:

<APPLET ARCHIVE="multimedia/AT-web-presentation-imp.jar" 
     CODE="ImpViewer.class" 
     WIDTH=100% 
     HEIGHT=100%> 
</APPLET> 

La pagina di prova che sto usando e':

http://www.alexandertechniqueatlantic.ca/test.php

Quando scarico il jar funziona bene, quindi sono certo che il problema è solo con l'incorporamento html. Aiuto!

Inoltre, ottengo il seguente errore:

java.lang.ClassCastException: ImpViewer cannot be cast to java.applet.Applet

+0

Da cosa deriva ImpViewer? Puoi includere la sua definizione di classe? – Sam

+0

Ciao Sam, non lo so, sono stato consegnato senza il codice sorgente. Di certo non eredita da Applet! C'è comunque da stipare in un sito web senza di esso? – Bill

risposta

7
java.lang.ClassCastException: ImpViewer cannot be cast to java.applet.Applet 

Il 'applet' è non un applet.

BTW - bella interfaccia utente. Come il modo in cui lo splash rosso sfuma alla pagina "Welcome Introductory Workshop". Molto liscio.

Lanciare da un collegamento utilizzando Java Web Start (& per favore non provare a racchiudere un'interfaccia utente così bella in una pagina web).


Se il cliente insiste sulla GUI di essere stipati in un sito web allora (li schiaffo per me &) provare questo hack.

/* 
<APPLET 
    ARCHIVE="AT-web-presentation-imp.jar" 
    CODE="ImpViewerApplet" 
    WIDTH=720 
    HEIGHT=564> 
</APPLET> 
*/ 
import java.awt.*; 
import java.applet.*; 
import java.util.*; 

public class ImpViewerApplet extends Applet { 

    public void init() { 
     setLayout(new BorderLayout()); 
     Window[] all = Window.getWindows(); 
     ArrayList<Window> allList = new ArrayList<Window>(); 
     for (Window window : all) { 
      allList.add(window); 
     } 
     String[] args = {}; 
     ImpViewer iv = new ImpViewer(); 
     iv.main(args); 

     all = Window.getWindows(); 
     for (Window window : all) { 
      if (!allList.contains(window) && window.isVisible()) { 
       if (window instanceof Frame) { 
        Frame f = (Frame)window; 
        Component[] allComp = f.getComponents(); 
        Component c = f.getComponents()[0]; 
        f.remove(c); 
        f.setVisible(false); 
        add(c); 
        validate(); 
       } 
      } 
     } 
    } 
} 

L'enfasi è sulla parola "mod".

  1. Il Frame lampeggia sullo schermo prima di scomparire.
  2. Funzionerà solo a 720x564 px, a differenza dello java.awt.Frame che è stato ridimensionabile a qualsiasi dimensione. Ma poi, il tuo "100%" larghezza/altezza era comunque un po 'ottimista. Alcuni browser onoreranno quei vincoli, altri no.
+0

Ciao Andrew, grazie per il complemento, non ho scritto l'interfaccia utente, mi è stato consegnato dal mio cliente. E vuole solo stipularlo in un sito web, quindi non è il mio posto per dire di no. C'è comunque che è possibile? – Bill

+0

Vedere l'aggiornamento. –

1

C'è voluto un po 'di sforzo, ma la classe ImpViewer ha la seguente definizione:

public class ImpViewer extends ImWindow 
    implements Printable, Runnable 
{ 
    [...] 

ImpViewer non è un Applet come deve essere, ma è invece un ImWindow. Dovrebbe ereditare da Applet o forse da ImApplet.

In entrambi i casi, l'idea di Andrew di utilizzare Java Web Start è legittima. L'app che hai assomiglia più ad un'app desktop.

+0

Puoi vedere un esempio di Java Web Start nel mio vecchio sito web per studenti qui: [Sam's Tetris Page] (http://students.cs.byu.edu/~samuelms/applets/tetris.php). Vedi il link [Esegui Tetris Applet Using Java WebStart] (http://students.cs.byu.edu/~samuelms/applets/tetris/tetris.jnlp). Questo è solo per darti un esempio di come sarebbe l'esperienza dell'utente. – Sam

+0

Va bene, dirò semplicemente al mio cliente di utilizzare JavaWS. Grazie per l'informazione. – Bill

+0

Nonostante abbia inserito il comando "Spingilo in un applet hack" in una modifica sopra, ti consiglio vivamente di adottare l'approccio JWS. –

1

Un Applet è un componente Java che gestisce le chiamate giuste da mostrare incorporato in una pagina Web. Il prodotto che hai (il file JAR) contiene tutto il necessario per eseguire il programma; tuttavia, non ha l'interfaccia corretta (l'applet) per eseguire quel programma incorporato in una pagina web.

Parla all'autore del prodotto (se l'autore non è disponibile, cerca la documentazione) e controlla se è disponibile un'interfaccia dell'applet. Forse è solo questione di usare un nome di classe diverso. Se sembra che un'interfaccia di questo tipo non sia disponibile, nessuno ha fatto il lavoro necessario per renderlo "embeddable" in una pagina web. Senza conoscere il tuo prodotto in modo più dettagliato, non è facile stabilire se lo sforzo di creare un'interfaccia Applet nel prodotto sia facile o meno.

Se non si dispone del codice sorgente, la quantità di sforzo per sviluppare un'interfaccia Applet su quello che si possiede è addirittura maggiore dell'impegno sconosciuto con il codice sorgente.

Ci sono alcuni prodotti che consentono di visualizzare e controllare le applicazioni da un browser Web, anche quando l'applicazione in questione non è stata progettata per essere incorporata in una pagina Web. Questi prodotti tendono ad essere costosi e proprietari; ma, se è veramente mission-critical (e se fa abbastanza soldi), allora le spese e gli sforzi potrebbero essere sopportabili. Con tale soluzione, il browser Web apre effettivamente una finestra in un "application server" configurato che avvia l'applicazione in modalità a schermo intero ogni volta che viene stabilita la connessione. Sì, è un'architettura dispari; tuttavia, tale architettura dispari esiste intenzionalmente in quanto è davvero l'unico modo possibile per fare alcune cose quando l'applicazione non può essere eseguita in altri ambienti.

Cerca Citrix per una soluzione di questo tipo nel caso in cui ti puoi permettere (ricorda che sono in gioco licenze aggiuntive di Windows) e puoi tollerarne le prestazioni e le stranezze.

+0

+1 Forse chi ha dato questo all'utente può renderlo compatibile con le applet. Sembra che l'app sia stata realizzata con "Impatica per PowerPoint 4.0" di "FACULTY-PC DAL". Inoltre, apparentemente 'com.impatica.v402.ImPlayer.class' estende l'applet. Tuttavia, non ho potuto ottenere nulla per accadere con esso. :( – Sam

Problemi correlati