我正在尝试探索嵌入HTML Java小程序的URL数据功能。
用于实例化java applet 1的HTML标记的文档不排除此选项,但我似乎无法解决此问题。
我使用(对象和applet)有不同的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 here
中嵌入JNLP的HTML答案 0 :(得分:5)
OBJECT元素的HTML4 specification允许通过URL DATA嵌入内联数据,Oracle的Applet实例化documentation也允许这样做。执行的测试显示了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数据支持的BUG未实现Bug ID: 4756961。
我在64位Windows机器上使用JRE7进行测试的结果如下:
答案 1 :(得分:2)
即使HTML标准允许,JRE通常也不了解base64编码数据。