6

Java アプレットがホストされているページの Javascript コードと通信するのに問題があります。時々動作しますが、解決されなかったいくつかの Java バグレポートを除いて、ググっても有用な情報が得られないというあいまいな例外をスローする場合もあります (Sun に感謝します)。

私が使用しているコードは次のとおりです。

JSObject win = JSObject.getWindow(this);
Object[] args = new Object[1];
args[0] = "test argument";
String result = (String) win.call("testJSfunc", args); // XXX

これは、// XXX とマークされた行で発生する例外です。断続的であることに注意してください。多くの場合は機能しますが、まったく同じコードを使用しても機能しない場合があります。ページを繰り返しリロードすると、すぐにエラーが発生します。

netscape.javascript.JSException: No registered plugin for applet ID 1
    at sun.plugin2.main.client.MessagePassingJSObject.newJSException(Unknown Source)
    at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source)
    at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source)
    at TestApplet.testCallJS(TestApplet.java:159)
    at TestApplet.init(TestApplet.java:139)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

私が使用すべきJavaとJavascriptの間で通信するための別のより安定した方法はありますか?

- - より詳しい情報 - -

Sun が提供する deployJava.js スクリプトを使用して、その場でアプレットを埋め込みます。MAYSCRIPT が有効になっていることを確認しました。MAYSCRIPT の問題ではないことはわかっています。通信が機能する場合があるからです。

4

3 に答える 3

1

設定して問題を解決したと思います...両方を設定するclassloader_cache=falseseparate_jvm=true、断続的なあいまいなエラーが発生しなくなりました。うまくいけば、これで問題が完全に解決されます。

于 2010-06-07T15:54:10.123 に答える
1

アプレットタグに MAYSCRIPT があることを確認してください。

<applet id="..." code="..." name=".." codebase="..." archive="..."  width="100%" height="100%" MAYSCRIPT>
于 2010-03-22T19:38:52.793 に答える
0

separate_jvm を true に設定すると、アプレットごとに新しい Java VM がインスタンス化されるため、パフォーマンスに非常に悪い影響を与えます。ページに複数のアプレット (30 以上) がある場合、これはかなり遅くなります。

この問題に対する他の解決策があるかどうか疑問に思います。たとえば、複数のタブにまたがる複数のアプレットがあります。アプレットを含む最初のタブを開くと、すべてのアプレットが問題なく正しく表示されます。ただし、プラグインが登録されていないというエラーが表示される他のタブの結果に切り替えます。IE では、すべてのアプレットが DOM に追加されるとすぐにインスタンス化されるため、このエラーは発生しません。

于 2012-02-13T06:11:51.573 に答える