Подтвердить что ты не робот

Вставить Java-апплет через URL-данные

Я пытаюсь изучить возможности данных URL для встраивания в апплет Java Java.

Документация для HTML-тегов для создания Java-апплета 1 не исключает этот параметр, но я, похоже, не могу этого сделать.

У меня есть разные варианты значений тегов HTML, использующих (объект и апплет), и то, что, по моему мнению, приблизилось к моей цели, было следующим:

<object type="application/x-java-applet" width="100" height="100">
  <param name="archive" value="data:application/java-archive;base64,BASE64_OF_JAR"/>
  <param name="code" value="test.class"/>
  <h1>not working</h1>
</object>

Это изменение приводит к исключению IlegalArgumentException с текстом "name". Я проверяю это нажатие на значок ошибки в браузере. На консоли java полная трассировка стека:

java.net.MalformedURLException: unknown protocol: data
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at sun.plugin.util.ProgressMonitorAdapter.setProgressFilter(Unknown Source)
        at sun.plugin2.applet.Plugin2Manager.setupProgress(Unknown Source)
        at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

Кто-нибудь имеет представление о том, как это сделать или если это невозможно?

PS: Вот пример того, как встраивать JNLP в HTML через Oracle здесь

4b9b3361

Ответ 1

спецификация HTML4 для элемента OBJECT позволяет встраивать встроенные данные через URL DATA и создание экземпляра Applet из Oracle также позволяет это. Проведенные тесты показывают плагин Java-браузера (от Oracle), а доступный исходный код из Java SE 6 показывает, что реализация не поддерживает он.

В этом случае, кажется, не имеет значения, поддерживает ли браузер его, потому что ссылка на ресурсы для ссылки ресурсов в элементе HTML/объекте Object/Applet выполняется с помощью плагина браузера.

Альтернативой будет использование десериализации апплета, сериализовано через URL DATA, с использованием атрибута OBJECT элемента Идентификатор ошибки: 4756961.

Результаты моих тестов с JRE7 на 64-битной машине Windows следующие:

  • Передача JAR через атрибут URL DATA to ARCHIVE приводит к исключению IllegalArgumentException в Applet2Manager.loadJarFiles();
  • Передача класса через атрибут URL DATA to CODE приводит к исключению ClassNotFoundException в Applet2ClassLoader.findClass();
  • Передача сериализованного апплета через атрибут URL DATA в OBJECT приводит к исключению FileNotFoundException в Plugin2ClassLoader.getResourceAsResource().

Ответ 2

Даже если это допустимо с помощью стандартов HTML, JRE обычно не понимают кодированные данные base64.