11

HTML Java アプレットに埋め込む URL データ機能を調査しようとしています。

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 を埋め込む方法の例がここにあります。

4

2 に答える 2

5

OBJECT 要素のHTML4 仕様では、 URL DATAを介したインライン データの埋め込みが許可されており、Oracleのアプレット インスタンス化ドキュメントでもこれが許可されています。実行されたテストでは、Java ブラウザー プラグイン (Oracle から) が示され、 Java SE 6から入手可能なソース コードは、実装がそれをサポートしていないことを示しています。

この場合、オブジェクト/アプレット HTML 要素内のリソース参照のリソース処理はブラウザ プラグインによって実行されるため、ブラウザがサポートしているかどうかは問題ではないようです。

別の方法として、 APPLET 要素の OBJECT 属性を使用して、URL DATA を介してシリアライズされたアプレットのデシリアライゼーションを使用することもできます。HTML4 仕様で言及されているように、APPLET および OBJECT 属性に対する積極的なサポートはなく、JRE は URL DATA からのオブジェクトの逆シリアル化もサポートしていないようです。

簡単に言うと、JRE は CODE、OBJECT、および ARCHIVE HTML 属性での base64 デシリアライゼーションをサポートしていません。

また、バグ ID: 4756961が満たされていない JRE1.4.1 の URL DATA サポートに関するバグもあります。

64 ビット Windows マシンで JRE7 を使用してテストした結果は次のとおりです。

  • URL DATA を介して JAR を ARCHIVE 属性に渡すと、Applet2Manager.loadJarFiles(); で IllegalArgumentException が発生します。
  • URL DATA を介してクラスを CODE 属性に渡すと、Applet2ClassLoader.findClass(); で ClassNotFoundException が発生します。
  • URL DATA を介してシリアル化されたアプレットを OBJECT 属性に渡すと、Plugin2ClassLoader.getResourceAsResource() で FileNotFoundException が発生します。
于 2012-09-23T18:30:31.267 に答える
2

HTML 標準で許容されている場合でも、JRE は通常、base64 でエンコードされたデータを認識しません。

于 2012-09-18T01:38:42.423 に答える