Java小程序问题<--&燃气轮机;Javascript通信

Java小程序问题<--&燃气轮机;Javascript通信,java,javascript,applet,liveconnect,Java,Javascript,Applet,Liveconnect,我无法让Java小程序与小程序所在页面上的Javascript代码通信。它有时可以工作,但有时会抛出一个模糊的异常,Google for除了一些从未解决的Java bug报告之外,没有发现任何有用的信息(感谢Sun) 以下是我正在使用的代码: JSObject win = JSObject.getWindow(this); Object[] args = new Object[1]; args[0] = "test argument"; String result = (String) win.

我无法让Java小程序与小程序所在页面上的Javascript代码通信。它有时可以工作,但有时会抛出一个模糊的异常,Google for除了一些从未解决的Java bug报告之外,没有发现任何有用的信息(感谢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的问题,因为有些时候通信是有效的

确保小程序标记中有MAYSCRIPT

<applet id="..." code="..." name=".." codebase="..." archive="..."  width="100%" height="100%" MAYSCRIPT>


我想我已经通过设置
classloader\u cache=false
separate\u jvm=true
解决了这个问题……一旦我设置了这两个参数,间歇性模糊错误就不再发生了。希望这能很好地解决这个问题。

如果将separate_jvm设置为true,则会对性能产生非常坏的影响,因为每个applet都会实例化新的Java VM。如果页面上有多个小程序(30+),那么速度相当慢


我想知道这个问题是否还有其他解决办法。例如,我们在多个选项卡上有多个小程序。打开小程序的第一个选项卡时,所有小程序都会正确显示,没有问题。但是,切换到任何其他选项卡结果,错误为“无已注册插件”。在IE中不会发生此错误,因为在IE中,所有小程序在添加到DOM时都会立即实例化

你是在用applet标签嵌入它吗?是的,它就在那里。无论如何,MAYSCRIPT不应该是问题所在,因为异常是间歇性的。有时可以,有时不能(只需重新加载页面,不更改任何代码)。如果MAYSCRIPT是问题所在,它将100%的时间阻塞通信。我认为在PlugIn2中MAYSCRIPT被忽略了。谷歌搜索了“plugin2”,很有意思,想知道他们在java 1.6.10中引入的新插件架构是否有一些bug。“plugin2”还定义了一种与浏览器交互的新方式。也许我应该使用它,也许它更稳定?我的错…新方法只适用于DOM操作。您使用完全相同的方法调用javascript(通过JSObject类)。在内部,它已经被重写,但您使用的是相同的API。不幸的是,此解决方案导致小程序完全无状态。页面重新加载或刷新后,将清除所有静态变量。