Java アプレットのヒントとトラブルシューティング

アプレットが実行されると、ステータスバーには、「<アプレット名> を読み込みました」、「<アプレット名> を初期化しました」、「<アプレット名> を開始しました」などのメッセージが表示されます。アプレットが正しくロードされない場合は、[ツール] - [Java™ デバッグコンソールの表示] を選択してアプレットを調べることで、問題を判別してください。

アプレットが実行されない場合のトラブルシューティング

リソースファイルへアクセスする

Java アプレットでは、イメージファイルやオーディオファイルなどのリソースファイルが頻繁に使用されます。アプレットからリソースファイルにアクセスするには、次の 3 つの方法が一般的です。

アクセス方法によっては、アプレット用のリソースファイルを検出できないことがあります。リソースファイルを指定する方法としては、getCodeBase メソッドを使用するのが最も信頼性の高い方法です。アプレットがリソースファイルを検出できない場合には、getCodeBase メソッドを使用するようにアプレットを変更します。文書内のリソースファイルを置換するために、ファイルを再コンパイルしてから [Java アプレット] - [更新] を選択します。

完全な URL を指定する

リソースファイルを検出するために完全な URL を指定するアプレットの場合は、アプレットは指定された URL でファイルを探します。例えば、getImage("http://www.someplace.com/images", "image.gif") のように指定する場合です。Domino サーバーが管理する文書内で、Notes クライアントを使用してアプレットを実行させる場合は、この方法で通常は問題ありません。ただし、インターネット上のファイルにアクセスできるように、Notes クライアントが正しく設定されている必要があります。

同様に、[$FILE] を組み込むように Domino URL を構成することで、Notes 文書に添付されているイメージにアクセスできます。例えば、getImage("http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE", "image.gif") のように指定する場合です。前述の場合と同様に、Notes クライアントで実行中のアプレットからイメージファイルにアクセスできるようにするには、Notes クライアントから Domino サーバーにアクセスできるように設定しておく必要があります。

アプレットのリソースファイルの完全な URL を指定する方法には、インターネットを経由するためリソースファイルへのアクセススピードが遅くなるという欠点があります。また、すべての Notes クライアントが直接インターネットにアクセスできるように設定されているわけではありません。さらに、この方法は、リソースファイルの位置が変更されないことを前提としています。こうしたことが問題でない場合は、完全な URL を指定する方法は、リソースファイルにアクセスするための信頼性の高い方法です。

getDocumentBase メソッドを使用する

getDocumentBase メソッドを使用する方法は、リソースファイルを指定する方法として、最も信頼性が低い方法です。リソースファイルを指定する getDocumentBase メソッドは、アプレットが存在する文書のベースとなる URL (つまり完全な文書 URL から文書ファイル名を除いたもの) を返します。例えば、アプレットが次の文書上で実行されている場合を考えます。

http://www.someplace.com/test/example.html

この場合、getDocumentBase メソッドは、次の URL の指定を返します。

http://www.someplace.com/test

一部のアプレットでは、getImage(getDocumentBase(), "image.gif") のように、getDocumentBase メソッドを使用してリソースファイルの URL を指定します。上記の URL 例では、getDocumentBase メソッドを使用するアプレットは、次の URL によりイメージファイルを探します。

http://www.someplace.com/test/image.gif

文書の Domino URL は、単にファイルを参照するものではないことに注意してください。Domino URL は、文書を表す HTML を Domino サーバーによって作成するためのコマンドです。Domino URL に対して getDocumentBase メソッドを使用すると、予測外の結果が生じます。例えば、次の Domino URL を使用してアプレットをリンクしたとします。

http://www.someplace.com/database.nsf/MasterView/862..12E?OpenDocument

この場合は、getImage コールと getDocumentBase メソッドを併用することにより、次の URL が返されます。

http://www.someplace.com/database.nsf/MasterView/image.gif

ここでは、アプレットはファイルを見つけることができません。これは、文書の ID が削除されているからです。また、イメージが文書の添付ファイルとなっているため、ファイル名を識別するために [$File] 識別子が必要だからです。

文書の ID が削除されているため (また、イメージが文書の添付ファイルとなっているので、ファイル名の識別に [$FILE] 識別子が必要であるため)、アプレットは要求されたイメージを見つけることができません。

getCodeBase メソッドを使用する

getCodeBase メソッドを使用する方法は、アプレットのリソースファイルを指定する方法として最も信頼性の高い方法です。getCodeBase メソッドは、アプレットのロード元の位置をベースにした URL を返します。アプレットのコードベースは、 タグ中の CODEBASE 属性で指定できます。Domino により、Notes 文書内に挿入されているアプレット用の HTML が作成される場合は、CODEBASE 属性の完全な URL が作成されます。例えば、上記の例では、getCodeBase メソッドが次の URL を返します。

http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE

getImage コールなどのリソースコールと getCodeBase を併用すると、getCodeBase によりリソースファイルを正確に指定できます。以下に例を示します。

getImage(getCodeBase(), "image.gif")

アプレットが Domino によって管理されている場合は、次の URL が返されます。

http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE/image.gif

この URL により、アプレットはファイルを正しく見つけることができます。

リソースファイルを検索するためのパラメータ値を変更する

一部のアプレットには、リソースファイルを参照するためのパラメータや、リソースファイルが格納されているディレクトリを参照するためのパラメータがあります。例えば、背景のイメージとして使用するファイルや、オーディオファイルのディレクトリを指定するパラメータなどです。これらのパラメータが文書ベースではなくコードベースに関連するように、アプレットを編集する必要が生じることもあります。

他人が作成したアプレットの場合は、パラメータを編集する必要があります。例えば、インターネット上のアプレットにリンクしている場合や、CLASS ファイルだけが入手済みでソースコードがない場合などです。このような場合は、フォームまたは文書にアプレットを挿入してから、パラメータ値を編集する必要があります。この場合は、パラメータ値の前に「$notes_codebase」という文字列を付加します。

例えば、「images/image.gif」の代わりに、「$notes_codebase/images/image.gif」をパラメータ値として使用します。Domino により、パラメータの中の $notes_codebase 文字列は、すべてアプレット用のコードベースに変換されます。したがって、「$notes_codebase/images/image.gif」というパラメータ値は、Domino により次のように変換されます。

http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE/images/image.gif

この方法では、パラメータ値の指定時に完全な URL を指定していることになり、アプレットの getDocumentBase メソッドは上書きされます。これにより、アプレットはリソースファイルを見つけることができます。