web-dev-qa-db-ja.com

Javaアプレットでコードベースとアーカイブを正しく指定する方法は?

Firefoxのバージョン> 3.5(3.5。、3.6。、4。*)を使用し、archivecodebaseプロパティは正しくありますが、機能しません。アプレットのメインクラスはarchiveにあり、実行時にロードされるいくつかの必要なクラスはcodebaseにあります。 archiveのみを指定すると、アプレットはロードされますが、codebaseのクラスが欠落しています。 archivecodebaseを指定すると、アプレットをロードできません。アプレットがcodebaseフォルダからメインクラスを読み込もうとしているようで、archiveファイルを調べていません。

<html>    
<body>
<applet width=600 height=300 code="MyClass.class" 
  type="application/x-Java-applet;jpi-version=6" 
  archive="http://myurl.com/archive/myjar.jar" 
  codebase="http://myurl.com/classes">
    no applet
</applet>
</body>    
</html>

メインクラスは http://myurl.com/archive/myjar.jar にあり、ランタイムクラスは http://myurl.com/classes にあります。

11
MaXal

属性codebaseは、アプレットのベースURL(アプレットのコードを含むディレクトリ)を指定します。これは、archive属性のjarファイルを検索するときに使用され、archive属性のすべてのjarがcodebaseを基準にして検索されます。
そう。 archive="http://myurl.com/archive/myjar.jar"codebase="http://myurl.com/classes"を一緒に使用すると、次のようになります。find" http://myurl.com/archive/myjar.jar " in- " http://myurl.com/classes "フォルダー。
つまり完全な検索パスは" http://myurl.com/classes/http://myurl.com/archive/myjar.jar "です。そしてもちろんそれは見つかりません!
また、jarファイルがarchive属性で指定されていないクラスは、codebase属性なしでは見つかりません。つまりcodebaseがない場合、" http://myurl.com/classes "フォルダーでクラスを見つける方法はありません。

詳細については、 アプレットタグを使用した展開 チュートリアルを参照してください。

私は次のことを提案します解決策

  1. myjar.jarhttp://myurl.com/classesフォルダーに配置します。
  2. MyClass.classがdefaultパッケージにあり、" http://myurl.com/archive/myjar.jar にあると仮定します。 "、次のコードが機能するはずです:

<html>    
<body>
<applet width=600 height=300 code="MyClass" 
  type="application/x-Java-applet;jpi-version=6" 
  archive="myjar.jar" 
  codebase="http://myurl.com/classes">
   no applet
</applet>
</body>    
</html>
22
MockerTim