plugin - ¿Cómo mostrar el applet de Java dentro de la página de GWT?
verificar java instalado (6)
"La importación de javax.swing no se puede resolver": lo siento, no soy un experto en GWT, pero este error es classpath-esque. Parece que GWT no puede encontrar el rt.jar para su JVM.
Probablemente me esté perdiendo algo simple aquí, pero no puedo encontrar la respuesta en otro lado. Solo quiero mostrar un applet en mi código GWT.
SO: Windows XP Java: JDK 1.6.0_10 Otro: GWT, GWT-Ext 2.0.5
Aquí está el applet (obviamente simplificado para las pruebas):
package foo.applet;
import javax.swing.JApplet;
import java.awt.Graphics;
public class HelloApplet extends JApplet
{
public void paint(Graphics g)
{
g.drawRect(0, 0,
getSize().width - 1,
getSize().height - 1);
g.drawString("Hello world!", 5, 15);
}
}
Aquí está el código que lo llama:
package foo.applet;
import com.google.gwt.user.client.ui.HTML;
import com.gwtext.client.widgets.Panel;
public class AppletPanel extends Panel
{
public AppletPanel()
{
HTML applet = new HTML();
applet.setHTML("<applet name=/"HelloApplet/" code=/"HelloApplet.class/" width=/"300/" height=/"300/"" );
this.add(applet);
}
}
Cuando abro la aplicación en modo alojado, el jvm se bloquea (archivado el incidente 1425130 con Sun).
Cuando intento compilar el código GWT para ejecutar en un navegador, obtengo esto:
[ERROR] Errors in ''file:/C:/<blah>/applet/HelloApplet.java''
[ERROR] Line 3: The import javax.swing cannot be resolved
[ERROR] Line 4: The import java.awt cannot be resolved
[ERROR] Line 6: JApplet cannot be resolved to a type
[ERROR] Line 8: Graphics cannot be resolved to a type
[ERROR] Line 11: The method getSize() is undefined for the type HelloApplet
[ERROR] Line 12: The method getSize() is undefined for the type HelloApplet
Obviamente, me falta una biblioteca de applet, pero he analizado todos los archivos jar en jdk y he intentado incluir todos los que incluyen JApplet o awt (plugin.jar, resources.jar, rt.jar, deploy.jar, javaws.jar).
Además, estoy bastante seguro de que una vez que resuelva este problema, habrá otro acechando justo después, pero lo guardaré para otra pregunta.
¡Gracias!
La aplicación heredada no es un applet; es una aplicación Swing de clientes gruesos. Lo hemos pirateado para ejecutarlo como un applet porque nuestros clientes quieren un cliente de navegador y esta es la forma más rápida de hacerlo.
No sé si GWT aceptaría la solución de JPanel, la aplicación no está escrita de ninguna manera que GWT pueda analizar, es decir, no está utilizando la API de GWT, sino que está utilizando la API de Swing. AFAIK, la única forma de mezclar Swing con GWT sería en forma de applet.
¿Me estoy perdiendo de algo?
¿Estás tratando de compilar GWT tu applet?
Esto no funcionará, ya que la compilación de GWT (que es solo la traducción de Java a Javascript) admite solo un puñado de bibliotecas de Java y ciertamente no de applets.
Asegúrese de que su applet no esté en la ruta de origen de GWT (muévala a otro paquete).
Google encontró esto . Una de las respuestas dice: "El póster anterior es correcto, el intérprete de comandos no puede manejar elementos incrustados como Flash o Applets. Hay algunas restricciones en el componente SWT utilizado para ejecutar el navegador dentro del shell. Se ha asociado un informe de error con En este aspecto, es posible que desee vigilarlo para futuras actualizaciones ".
Parece que no se puede hacer.
No use GWTCompiler para compilar el código de su applet. Yo recomendaría crear un segundo módulo (o proyecto) que contenga solo el código del applet. Compile esto en un JAR separado utilizando el compilador Javac estándar (o su IDE / hormiga)
GWTCompiler usa un subconjunto de las bibliotecas de Java, y solo debe usarse para generar el código que eventualmente se ejecutará como Javascript.
Una aplicación liviana puede mezclar GWT y JNLP. Entonces podríamos obtener las jarras más grandes en las máquinas de las personas de forma bastante transparente. Como ejemplo, me gustaría utilizar el kit de herramientas de Batik u otros objetos relacionados con SVG para tener SVG en mi aplicación GWT, en lugar de estar obligado a usar solo png u otros formatos de trama.
- Tyro: también puede enviarme sus pensamientos sobre esto a [email protected]
Encontré esto durante la investigación de una aplicación gwt
, y aunque este es un hilo antiguo, pensé que publicaría un método para ejecutar un applet dentro de gwt.
Primero crea dos proyectos distintos, uno para tu applet y otro para gwt
. crea tu applet de forma normal.
lanza tu applet.
entonces FIRME su .jar
con jarsigner
.
crea tus módulos gwt
forma normal.
para insertar el applet utilizo un objeto HTML gwt
con una etiqueta de applet como esta:
(applet MAYSCRIPT code = ''com.myapplet.MyApplet'' id =''myApplet'' jnlp_href = ''/spplets/MyApplet.jnlp'', width=500, height=400)(/applet)
Simplemente agregue el widget HTML a un panel de contenido y la parte de GUI estará lista.
El applet .jar deberá ir en / war para su proyecto gwt.
Junto con .jar
tendrá que escribir un archivo .jnlp
para iniciar el applet.
Esto incorporará un applet en gwt y lo ejecutará en modo alojado o de producción. La clave es FIRMAR tu .JAR
y .JNLP
con .JNLP