gpt4 book ai didi

java - 通过 URL 数据嵌入 Java 小程序

转载 作者:技术小花猫 更新时间:2023-10-29 12:53:53 24 4
gpt4 key购买 nike

我正在尝试探索 URL 数据功能以嵌入到 HTML Java applet 中。

用于实例化 Java 小程序的 HTML 标记的文档 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>

此变体导致带有文本“name”的 IlegalArgumentException。我点击浏览器上的错误图标检查了这个。在 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:Oracle 提供了一个如何在 HTML 中嵌入 JNLP 的示例 here

最佳答案

HTML4 specification for OBJECT 元素允许通过 URL DATA 嵌入内联数据和 Applet 实例化 documentation来自 Oracle 的也允许这样做。执行的测试显示了 Java 浏览器插件(来自 Oracle)和来自 Java SE 6 的可用源代码。 , 表明实现不支持它。

在这种情况下,浏览器是否支持似乎无关紧要,因为 Object/Applet HTML 元素中资源引用的资源处理是由浏览器插件执行的。

另一种方法是使用 applet 反序列化,通过 URL DATA 序列化,使用 APPLET element 的 OBJECT 属性.正如 HTML4 规范中提到的,没有对 APPLET 和 OBJECT 属性的主动支持,而且 JRE 似乎也不支持从 URL DATA 进行对象反序列化。

简而言之,JRE 不支持 CODE、OBJECT 和 ARCHIVE HTML 属性中的 base64 反序列化。

还有一个关于 JRE1.4.1 中 URL DATA 支持的 BUG 未实现 Bug ID: 4756961 .

我在 64 位 Windows 机器上使用 JRE7 的测试结果如下:

  • 通过 URL DATA 将 JAR 传递到 ARCHIVE 属性会导致 Applet2Manager.loadJarFiles() 中出现 IllegalArgumentException;
  • 通过 URL DATA 将类传递到 CODE 属性会导致 Applet2ClassLoader.findClass() 中出现 ClassNotFoundException;
  • 通过 URL DATA 将序列化小程序传递到 OBJECT 属性会导致 Plugin2ClassLoader.getResourceAsResource() 中出现 FileNotFoundException。

关于java - 通过 URL 数据嵌入 Java 小程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com