4

ここではおそらく単純なものが欠けていますが、他の場所で答えを見つけることができません。GWT コードでアプレットを表示したいだけです。

OS: Windows XP Java: JDK 1.6.0_10 その他: GWT、GWT-Ext 2.0.5

アプレットは次のとおりです (明らかにテスト用に単純化されています)。

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

これを呼び出すコードは次のとおりです。


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

}

アプリケーションをホスト モードで起動すると、jvm がクラッシュします (Sun にインシデント 1425130 を提出)。

ブラウザーで実行するために GWT コードをコンパイルしようとすると、次のようになります。

        [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

明らかにいくつかのアプレット ライブラリが不足していますが、jdk 内のすべての jar を調べて、JApplet または awt をリストするすべてのもの (plugin.jar、resources.jar、rt.jar、deploy.jar、 javaws.jar)。

また、この問題を解決したら、その直後に別の問題が潜んでいると確信していますが、それは別の質問のために保存します.

ありがとう!


レガシー アプリはアプレットではなく、シック クライアント Swing アプリケーションです。お客様がブラウザ クライアントを必要としており、これがそれを実現する最速の方法であるため、アプレットとして実行するようにハッキングしました。

GWT が JPanel ソリューションを受け入れるかどうかはわかりません。アプリは、GWT が解析できる方法で書かれていません。つまり、GWT API を使用しておらず、Swing API を使用しています。私の知る限り、Swing と GWT を混在させる唯一の方法は、アプレットの方法です。

何か不足していますか?

4

6 に答える 6

6

アプレットを GWT コンパイルしようとしていますか?

GWT のコンパイル (Java から Javascript への単なる変換) はほんの一握りの Java ライブラリしかサポートしておらず、アプレットもサポートしていないため、これは機能しません。

アプレットが GWT ソース パス上にないことを確認してください (別のパッケージに移動してください)。

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

于 2009-01-02T16:51:19.120 に答える
4

GWTCompiler を使用してアプレット コードをコンパイルしないでください。アプレット コードのみを含む 2 つ目のモジュール (またはプロジェクト) を作成することをお勧めします。標準 Javac コンパイラ (または IDE/ant) を使用して、これを別の JAR にコンパイルします。

GWTCompiler は Java ライブラリのサブセットを使用し、最終的に Javascript として実行されるコードを生成するためにのみ使用する必要があります。

于 2009-01-02T17:10:36.617 に答える
1

アプリの調査中にこれを見つけました。gwtこれは古いスレッドですが、gwt 内でアプレットを実行する方法を投稿すると思いました。

まず、アプレット用と 用の 2 つの異なるプロジェクトを作成しますgwt。アプレットを通常どおりに作成します。

アプレットをjarします。

次に、で署名.jarしますjarsigner

gwt通常どおりモジュールを作成します。

アプレットを埋め込むには、次のgwtようなアプレット タグを持つ HTML オブジェクトを使用します。

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

HTML ウィジェットを contentPanel に追加するだけで、GUI 部分が完成します。

アプレット .jar は、gwt プロジェクトの /war に入れる必要があります。

とともに、アプレットを起動するためのファイルを.jar作成する必要があります。.jnlp

これにより、アプレットが gwt に埋め込まれ、ホスト モードまたはプロダクション モードで実行されます。重要なのは、署名して.JAR起動することです.JNLP

于 2012-03-09T18:50:57.460 に答える
1

Google はこれを見つけまし。応答の 1 つは次のように述べています。この問題については、今後の更新に注意してください。」

それはできないようです。

于 2009-01-02T15:04:22.193 に答える
0

軽量アプリでは、GWT と JNLP が混在する場合があります。そうすれば、かなり透過的に、より大きな瓶を人々のマシンに入れることができます。例として、png やその他のラスター形式のみを強制的に使用するのではなく、Batik ツールキットまたはその他の SVG 関連のグッズを使用して、GWT アプリで SVG を使用したいと考えています。

  • Tyro - bob.futrelle@gmail.com までご意見をお送りください。
于 2010-04-08T16:15:38.310 に答える
-1

「インポートjavax.swingを解決できません」-申し訳ありませんが、私はGWTの専門家ではありませんが、このエラーはクラスパス風です。GWT が JVM の rt.jar を見つけられないようです。

于 2009-01-02T15:02:19.560 に答える