Question

Il me manque probablement quelque chose de simple ici, mais je ne trouve pas de réponse ailleurs. Je veux juste afficher une applet dans mon code GWT.

OS: Windows XP Java: JDK 1.6.0_10 Autre: GWT, GWT-Ext 2.0.5

Voici l'applet (évidemment simplifié pour les tests):

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);
    }
}

Voici le code qui l'appelle:


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);
}

}

Lorsque je lance l'application en mode hébergé, jvm se bloque (incident classé 1425130 auprès de Sun).

Lorsque j'essaie de compiler le code GWT pour une exécution dans un navigateur, je reçois ceci:

        [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

Bien sûr, il me manque une bibliothèque d’applets, mais j’ai fouillé dans tous les fichiers jar du jdk et essayé d’inclure tous ceux qui répertorient JApplet ou awt (plugin.jar, resources.jar, rt.jar, deploy .jar, javaws.jar).

De plus, je suis presque sûr qu'une fois le problème résolu, il y en aura un autre qui se cache juste derrière, mais je le garde pour une autre question.

Merci!

L’application héritée n’est pas une applet, c’est une application Swing à client lourd. Nous l'avons piraté pour qu'il fonctionne comme une applet parce que nos clients veulent un navigateur client et c'est le moyen le plus rapide de le faire.

Je ne sais pas si GWT accepterait la solution JPanel - l’application n’est en aucun cas écrite par GWT - c’est-à-dire qu’elle n’utilise pas l’API GWT, elle utilise l’API Swing. Autant que je sache, le seul moyen de mélanger Swing avec GWT serait d’applet.

Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Essayez-vous de compiler votre applet avec GWT?

Cela ne fonctionnera pas, car la compilation GWT (traduction de Java en Javascript) ne prend en charge que quelques bibliothèques Java, et certainement pas les applets.

Assurez-vous que votre applet n'est pas sur le chemin source de GWT (déplacez-le dans un autre package).

Référence: http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t= RefJreEmulation

Autres conseils

N'utilisez pas GWTCompiler pour compiler le code de votre applet. Je recommanderais de créer un deuxième module (ou projet) contenant uniquement le code de l'applet. Compilez-le dans un fichier JAR séparé en utilisant le compilateur Javac standard (ou votre IDE / ant) ??

GWTCompiler utilise un sous-ensemble des bibliothèques Java et ne doit être utilisé que pour générer le code qui sera éventuellement exécuté en tant que Javascript.

Google a trouvé ce . L’une des réponses indique: "L’affiche précédente a raison, le shell ne peut pas gérer les éléments incorporés tels que Flash ou les applets. Il existe certaines restrictions dans le composant SWT utilisé pour exécuter le navigateur à l'intérieur du shell. Un rapport de bogue a été associé à ce problème. Vous pouvez le surveiller pour les mises à jour futures. "

On dirait que cela ne peut pas être fait.

J'ai trouvé cela lors de la recherche d'une application gwt , et même s'il s'agit d'un ancien fil de discussion, je pensais que je publierais une méthode pour exécuter une applet dans gwt.

Créez d’abord deux projets distincts, un pour votre applet et un pour gwt . faites votre applet comme d'habitude.

jar votre applet.

puis signez votre .jar avec jarsigner .

créez vos modules gwt normalement.

pour incorporer l'applet, j'utilise un objet HTML gwt avec une balise d'applet comme celle-ci:

(applet MAYSCRIPT code = 'com.myapplet.MyApplet' id = 'monApplet' jnlp_href = '/spplets/MyApplet.jnlp', width = 500, height = 400) (/ applet)

Ajoutez simplement le widget HTML à un contentPanel et la partie graphique est terminée.

L'applet .jar devra figurer dans / war pour votre projet gwt.

Parallèlement au .jar , vous devrez écrire un fichier .jnlp pour lancer l'applet.

Ceci incorporera une applet dans gwt et l’exécutera en mode hébergé ou en mode production. La clé est de SIGNER votre .JAR et de le lancer avec .JNLP

Une application très légère pourrait combiner GWT et JNLP. Ensuite, nous pourrions envoyer les plus gros pots sur les machines des gens de manière plutôt transparente. A titre d'exemple, j'aimerais utiliser la boîte à outils Batik ou d'autres goodies liés à SVG pour avoir SVG dans mon application GWT, plutôt que d'être obligé d'utiliser uniquement des formats png ou autres formats raster.

  • Tyro - vous pouvez également m'envoyer vos réflexions à l'adresse bob.futrelle@gmail.com
  • .

"L’importation javax.swing ne peut pas être résolue" - désolé, je ne suis pas un expert de GWT, mais cette erreur est classpath-esque. On dirait que GWT ne trouve pas le fichier rt.jar pour votre machine virtuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top