2011-09-23 28 views
5

Ya hay muchos recursos en esto pero parece que no puedo hacer que funcione. ¿Qué estoy haciendo mal? El archivo JAR se encuentra en:Cómo incrustar jar en HTML

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

Y el código que estoy utilizando para incrustar es:

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

la página de prueba que estoy usando es en:

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

Cuando descargo el jar, funciona bien, así que estoy seguro de que el problema es solo con la incrustación html. ¡Ayuda!

Además, me sale el siguiente error:

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

+0

¿De qué hereda ImpViewer? ¿Puedes incluir su definición de clase? – Sam

+0

Hola Sam, no sé, me entregaron sin el código fuente. ¡No está heredando de Applet eso seguro! ¿Hay alguna forma de meterlo en un sitio web sin él? – Bill

Respuesta

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

El applet 'es no un applet.

BTW - nice UI. Al igual que la forma en que el chapoteo rojo se desvanece en la página "Bienvenido al taller introductorio". Muy suave.

Láncelo desde un enlace usando Java Web Start (& por favor no intente meter una UI tan bella en una página web).


Si el cliente insiste en la interfaz gráfica de estar metido en un sitio web a continuación (bofetada para mí &) prueba este truco.

/* 
<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(); 
       } 
      } 
     } 
    } 
} 

El énfasis está en la palabra 'hack'.

  1. El Frame parpadeará en la pantalla antes de desaparecer.
  2. Solo funcionará a 720x564 px, a diferencia del java.awt.Frame que se puede cambiar de tamaño a cualquier tamaño. Pero entonces, su '100%' ancho/alto era un poco optimista de todos modos. Algunos navegadores respetarán esas limitaciones, otros no.
+0

Hola Andrew, gracias por el complemento, no escribí la UI, me la entregó mi cliente. Y él simplemente quiere meterlo en un sitio web, así que no es mi lugar decir que no. ¿Hay alguna manera posible? – Bill

+0

Ver la actualización. –

1

que tomó un poco de esfuerzo, pero su clase ImpViewer tiene la siguiente definición:

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

ImpViewer NO es un Applet como tiene que ser, sino que es un ImWindow. Debe heredar de Applet o quizás ImApplet.

En cualquier proporción, la idea de Andrews de usar Java Web Start es legítima. La aplicación que tienes se parece más a una aplicación de escritorio.

+0

Puede ver un ejemplo de Java Web Start en mi antiguo sitio web para estudiantes aquí: [Sam's Tetris Page] (http://students.cs.byu.edu/~samuelms/applets/tetris.php). Consulte el enlace [Ejecutar applet de Tetris usando Java WebStart] (http://students.cs.byu.edu/~samuelms/applets/tetris/tetris.jnlp). Esto es solo para darle un ejemplo de cómo sería la experiencia del usuario. – Sam

+0

Bien, le diré a mi cliente que use el JavaWS entonces. Gracias por la información. – Bill

+0

A pesar de haber incluido el 'meterlo en un applet hack' en una edición anterior, le recomiendo encarecidamente que adopte el enfoque JWS. –

1

Un Applet es un componente de Java que maneja las llamadas correctas para mostrar incrustadas en una página web. El producto que tiene (el archivo JAR) contiene todo lo necesario para ejecutar el programa; sin embargo, no tiene la interfaz correcta (el applet) para ejecutar ese programa incrustado en una página web.

Hable con el autor del producto (de si ese autor no está disponible, busque la documentación) y vea si hay disponible una interfaz de applet. Tal vez solo se trate de usar un nombre de clase diferente. Si parece que dicha interfaz no está disponible, entonces nadie ha hecho el trabajo necesario para que sea "incrustable" en una página web. Sin conocer su producto con más detalle, no es fácil determinar si el esfuerzo para crear una interfaz Applet en el producto es fácil o no.

Si no tiene el código fuente, entonces la cantidad de esfuerzo para desarrollar una interfaz Applet a lo que tiene es incluso mayor que la cantidad desconocida de esfuerzo que hubiera sido con el código fuente.

Hay algunos productos que permiten ver y controlar aplicaciones desde un navegador web, incluso cuando la aplicación en cuestión no fue diseñada para ser incorporada en una página web. Estos productos tienden a ser costosos y patentados; pero, si es realmente crítico para la misión (y si gana suficiente dinero), entonces el gasto y el esfuerzo podrían ser soportados. Con esta solución, el navegador web realmente abre una ventana en un "servidor de aplicaciones" configurado que inicia la aplicación en modo de pantalla completa cada vez que se establece la conexión. Sí, es una arquitectura extraña; sin embargo, existe una arquitectura tan extraña a propósito, ya que es la única manera posible de hacer algunas cosas cuando la aplicación no puede ejecutarse en otros entornos.

Busque en Citrix una solución de este tipo en caso de que pueda pagarla (recuerde que hay licencias de Windows adicionales) y puede tolerar su rendimiento y peculiaridades.

+0

+1 Quizás quien le haya dado esto al usuario puede hacerlo compatible con los applets. Parece que la aplicación se hizo con "Impatica para PowerPoint 4.0" por "FACULTY-PC DAL". Además, aparentemente 'com.impatica.v402.ImPlayer.class' extiende Applet. Sin embargo, no pude hacer que pasara nada con eso. :( – Sam

Cuestiones relacionadas