GWTページ内にJavaアプレットを表示する方法は?
質問
ここでは簡単なものが欠けていると思いますが、他の場所には答えが見つかりません。 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をgrepし、JAppletまたはawt(plugin.jar、resources.jar、rt.jar、deploy、 .jar、javaws.jar)。
また、この問題を解決したらすぐに別の問題が潜んでいると確信していますが、別の質問のために保存します。
ありがとう!
レガシーアプリはアプレットではなく、シッククライアントSwingアプリケーションです。お客様がブラウザクライアントを必要としているため、アプレットとして実行するようにハッキングしました。これが、これを実現する最も速い方法です。
GWTがJPanelソリューションを受け入れるかどうかわからない-アプリはGWTが解析できる方法で書かれていない-つまり、GWT APIを使用していない、Swing APIを使用している私の知る限り、SwingとGWTを混在させる唯一の方法はアプレット形式です。
何かが足りませんか?
解決
アプレットをGWTでコンパイルしようとしていますか?
これは機能しません。GWTコンパイル(JavaからJavascriptへの単なる変換)がサポートするJavaライブラリはほんの一握りであり、アプレットはサポートしていません。
アプレットがGWTソースパス上にないことを確認します(別のパッケージに移動します)。
他のヒント
アプレットのコードをコンパイルするためにGWTCompilerを使用しないでください。アプレットコードのみを含む2番目のモジュール(またはプロジェクト)を作成することをお勧めします。標準のJavacコンパイラ(またはIDE / ant)を使用して、これを別のJARにコンパイルします
GWTCompilerはJavaライブラリのサブセットを使用し、最終的にJavascriptとして実行されるコードの生成にのみ使用する必要があります。
gwt
アプリの調査中にこれを発見しました。これは古いスレッドですが、gwt内でアプレットを実行するメソッドを投稿すると思いました。
まず、アプレット用と gwt
用の2つの異なるプロジェクトを作成します。
通常どおりアプレットを作成します。
アプレットをjarします。
次に、 jarsigner
で .jar
に署名します。
通常どおり gwt
モジュールを作成します。
アプレットを埋め込むには、 gwt
HTMLオブジェクトと次のようなアプレットタグを使用します。
(apple 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
軽量のアプリでは、GWTとJNLPが混在する場合があります。 そうすれば、より大きなjarファイルをユーザーのマシンにかなり透過的に取り込むことができます。 例として、pngやその他のラスター形式のみを使用することを強いられるのではなく、GWTアプリでSVGを使用するために、Batikツールキットまたはその他のSVG関連グッズを使用したいと思います。
- Tyro-この件についてのご意見をbob.futrelle@gmail.comまでメールでお送りください
&quot;インポートjavax.swingを解決できません&quot; -申し訳ありませんが、私はGWTのMavenではありませんが、このエラーはクラスパスに似ています。 GWTがJVMのrt.jarを見つけられないように聞こえます。