Запуск окна браузера из Java WebStart (JNLP) в Java 6u13+
-
12-09-2019 - |
Вопрос
В Java 6u13 и 6u14 обнаружена ошибка.http://bugs.sun.com/view_bug.do?bug_id=6835450
Проще говоря, следующий код должен открывать окно браузера, но из-за ошибки во фреймворке он перестал работать в Java 1.6 update 13.Больше ничего не открывается.Была аналогичная ошибка для Java-апплетов (которая была исправлена в обновлении 14), но она все еще существует в обновлении 14 для Java WebStart / JNLP.
getAppletContext().showDocument(new URL("http://www.sun.com"),"_blank");
Знаете ли вы о каких-либо обходных путях?
Решение
Я не пробовал это в JNLP, но обычно это должно сработать:
java.awt.Desktop.getDesktop().browse(new URI("http://www.sun.com"));
Другие советы
Делает BasicService.showDocument
работать?Я не могу вспомнить, как это реализовано навскидку.
В качестве альтернативы, используйте LiveConnect для самостоятельного выполнения JavaScript (хотя это может привести к тем же проблемам).
public boolean openUrl(final URL url) {
try {
// Lookup the javax.jnlp.BasicService object
BasicService bs = (BasicService)javax.jnlp.ServiceManager.lookup("javax.jnlp.BasicService");
// Invoke the showDocument method
return bs.showDocument(url);
} catch(UnavailableServiceException ue) {
// Service is not supported
log.log(Level.WARNING, "Could not open URL " + url, ue);
return false;
}
}