У меня проблемы с получением Java-апплета для связи с кодом Javascript на странице, на которой размещен апплет. Иногда это работает, но в других случаях выдает неясное исключение: поиск в Google не дал никакой полезной информации, кроме нескольких сообщений об ошибках 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, который я должен использовать?
--- Подробнее ---
Я использую сценарий deployJava.js, предоставленный Sun, для встраивания апплета на лету. Я убедился, что MAYSCRIPT включен. Я знаю, что это не проблема с MAYSCRIPT, потому что связь работает иногда.