Frage

Ich bin wohl etwas zu verpassen einfach hier, aber ich kann die Antwort nicht finden anderswo.Ich möchte nur zeigen Sie ein applet in meinem GWT-code.

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

Hier ist das applet (natürlich vereinfacht, zum testen):

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

Hier ist der code aufrufen:


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

}

Wenn ich starten Sie die app im hosted-Modus, die jvm-Abstürze (eingereicht Vorfall 1425130 mit Sonne).

Wenn ich versuche zu kompilieren, die GWT-code für die in einem browser ausgeführt wird, bekomme ich diese:

        [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

Offensichtlich bin ich etwas fehlt applet-Bibliothek, aber ich habe grep durch alle die Gläser in die jdk-und versucht, auch alle diejenigen, die Liste JApplet oder awt (plugin.jar, resources.jar, rt.jar, deploy.jar, javaws.jar).

Auch bin ich mir ziemlich sicher, dass, sobald ich dieses problem lösen, es ist eine andere lauern gleich nach, aber werde ich retten, für eine andere Frage.

Vielen Dank!


Die legacy-app ist nicht ein applet - es ist ein thick-client-Swing-Anwendung.Wir habe es gehackt, um zu laufen, wie ein applet, denn unsere Kunden wünschen sich einen browser-client und dies ist der Schnellste Weg, um damit fertig zu werden.

Ich weiß nicht, ob GWT akzeptieren würde, die JPanel - Lösung-die app ist nicht geschrieben in einer Weise, die GWT analysieren können - alsoes ist nicht mit dem GWT-API, es ist mit der Swing-API.AFAIK, der einzige Weg zu mischen, Swing mit GWT wäre in applet Mode.

Bin ich etwas fehlt?

War es hilfreich?

Lösung

Versuchen Sie, auf Ihr Applet GWT-kompilieren?

Das wird nicht funktionieren, wie GWT Kompilierung (die von Java zu Javascript nur Übersetzung ist) unterstützt nur wenig Java-Bibliotheken und schon gar nicht Applets.

Stellen Sie sicher, dass Ihr Applet nicht auf GWT Quellpfad ist (es zu einem anderen Paket bewegen).

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

Andere Tipps

Verwenden Sie nicht die GWTCompiler zu kompilieren, applet-code.Ich würde empfehlen, ein zweites Modul (oder ein Projekt), enthält nur den applet-code.Kompilieren Sie diese auf ein separates GLAS mit der standard Javac compiler (oder die IDE - /ant)

Die GWTCompiler verwendet eine Teilmenge der Java-Bibliotheken, und sollte nur verwendet werden, um den code zu generieren, welche schließlich läuft als Javascript.

Google gefunden this . Eine der Antworten sagt: „Das bisherige Plakat richtig ist, kann die Schale nicht Dinge wie Flash eingebettet Griff oder Applets Es gibt einige Einschränkungen in der SWT-Komponente verwendet, um den Browser innerhalb der Schale, um ein Fehlerbericht mit in Verbindung gebracht.. dieses Problem kann man ein Auge auf sie für zukünftiges Updates halten will. "

Sieht aus wie es nicht getan werden kann.

Das fand ich bei der Recherche für eine gwt App, und obwohl dies ein alter Thread dachte, dass ich eine Methode schreiben würde ein Applet innerhalb von gwt auszuführen.

Erstellen Sie zunächst zwei verschiedene Projekte, eine für Ihr Applet und eine für gwt. macht das Applet als normal.

Ihr Applet jar.

dann unterschreiben Sie Ihren .jar mit jarsigner.

Erstellen Sie Ihre gwt Module als normal.

die Applet ich mit einem Applet-Tag wie folgt ein gwt HTML-Objekt verwenden, um einbetten:

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

Sie einfach das HTML Widget zu einem Content hinzufügen und die gui Teil gemacht wird.

Das Applet .jar im / Krieg für Ihr gwt Projekt gehen müssen.

Zusammen mit dem .jar benötigen Sie eine .jnlp Datei zu schreiben, das Applet zu starten.

Das wird ein Applet in gwt einbetten und es in gehostete oder Produktionsmodus ausgeführt werden. Der Schlüssel ist, Ihre .JAR zu unterzeichnen und starten Sie es mit .JNLP

Ein Licht-Schwergewichts-App könnte GWT und JNLP mischen. Dann könnten wir eher transparent die größeren Gläser auf Menschen Maschinen. Als Beispiel würde Ich mag die Batik-Toolkit oder anderes SVG-bezogenen Leckereien verwenden SVG in meiner GWT app zu haben, anstatt nur png oder andere Rasterformate zu verwenden, gezwungen.

  • Tyro - Sie können auch Ihre Meinung zu diesem mir bei bob.futrelle@gmail.com
  • Mail

"Der Import javax.swing kann nicht aufgelöst werden" - sorry, ich bin kein GWT Maven, aber dieser Fehler ist Classpath-esque. Klingt wie GWT können nicht die rt.jar für Ihre JVM finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top