簡體   English   中英

通過URL數據嵌入Java小程序

[英]Embed Java applet through URL data

我正在嘗試探索嵌入HTML Java applet的URL數據功能。

用於實例化java applet 1的 HTML標記的文檔不排除此選項,但我似乎無法解決此問題。

我使用(對象和小程序)有不同的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:有如何在HTML甲骨文嵌入JNLP的例子在這里

OBJECT元素的HTML4規范允許通過URL DATA嵌入的內聯數據和Oracle的Applet實例化文檔也允許這樣做。 所執行的測試顯示了Java瀏覽器插件(來自Oracle),以及來自Java SE 6的可用源代碼,表明該實現不支持它。

在這種情況下,瀏覽器是否支持它似乎並不重要,因為對象/小程序HTML元素中的資源引用的資源處理是由瀏覽器插件執行的。

另一種方法是使用applet反序列化,通過URL DATA序列化,使用APPLET元素的OBJECT屬性。 正如HTML4規范中所提到的,對APPLET和OBJECT屬性沒有主動支持,並且JRE似乎也不支持來自URL DATA的對象反序列化。

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

在JRE1.4.1中還有一個關於URL DATA支持的BUG未實現錯誤ID:4756961

我在64位Windows機器上使用JRE7進行測試的結果如下:

  • 將JAR通過URL DATA傳遞給ARCHIVE屬性會導致Applet2Manager.loadJarFiles()中出現IllegalArgumentException;
  • 通過URL DATA將類傳遞給CODE屬性會導致Applet2ClassLoader.findClass()中的ClassNotFoundException;
  • 將序列化小程序通過URL DATA傳遞到OBJECT屬性會導致Plugin2ClassLoader.getResourceAsResource()中出現FileNotFoundException。

即使HTML標准允許,JRE通常也不了解base64編碼數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM