作ったJavaAppletがブラウザで動かない場合



ふつーにうごいてる人には用のない文書です。

対象:

JavaAppletを作っていて、AppletViewerとかのデバッグ環境では動くのにブラウザで動かないとか、自分のブラウザでは動くのに公開すると他の人のとこでは動かないとかって人。


考えられる原因その1:JDK1.2以上でコンパイルしてる。

2004年4月時点でもっとも多いJavaApplet実行環境・つまりWindowsに標準搭載されているJavaVMはJDK1.1相当でコンパイルしたclassファイルじゃないとマトモに動きません。
コマンドラインでコンパイルしてる人は、オプションに"target 1.1"を指定することで、1.1のVMと互換性を持ったクラスファイルを生成してくれるらしいです。

>javac -target 1.1 Sample.java

Eclipceを使ってる人は、
1.「プロジェクト」→「プロパティ」でプロパティを開く
2.左のツリーの「Javaコンパイラー」を選択して、「プロジェクト設定の使用」をクリック
3.「準拠およびクラス・ファイル」タブをクリック
4.「デフォルト準拠設定の使用」チェックを外して、「生成された.classファイルの互換性」で1.1を選択
で適用すればいいはず。


他の開発環境では知りません。マニュアルとかその辺読むなり、開発環境の設定でそれらしいの探してみてください。


また、Windows2000のSP4やXPのSP1aにはMS-JVMが入っていないため、SP適用済みのOSをインストールした場合などは別途JVMをインストールする必要があります。
ですが、現在MicrosoftからMS-JVMを入手することはできません(例の裁判のアレで)
MSJVMで動作確認したいのにどうすれば・・・という人は、Yahoo!チャットから落としておきましょう。 いつ無くなるか判らないので今のうちに。
あと、ブラウザの設定でSunのJVMを使用しないように設定することをお忘れ無く。
IEだったら「インターネットオプション」→「詳細設定」タブ



っていうか、アプレット作ってる人にとってコレは常識中の常識だろうから今更な感じですが。
始めたばかりの人&ど忘れした人対象ってことで。



考えられる原因その2:バグ(ぉ

いや、実際コレ以外他に原因ないでしょうけど。

ブラウザ上で実行した際、灰色のまま何も表示されていない場合、マウスをアプレット領域の境界付近で動かしてると、 一瞬ブラウザのステータスバーに見慣れたエラーメッセージ(NullPointerExceptioinとか)が表示されることがあったりします。
それをヒントになんとか探すしか(汗

ちなみに私が遭遇したケースだと、FallBingo!!作ってるときでしたけど、

MediaTracker mt = new MediaTracker(this);
Image[] coinImg = new Image[2];
Image img1st = getImage(getCodeBase(),"arc.gif");
Image img2nd = getImage(getCodeBase(),"akiha.gif");

mt.addImage(img1st,0);
mt.addImage(img2nd,1);
try{
    mt.waitForAll();
}catch(InterruptedException e){
    System.out.println("error");
}
coinImg[0] = img1st;
coinImg[1] = img2st;

としなければいけないところを


MediaTracker mt = new MediaTracker(this);
Image[] coinImg = new Image[2];
Image img1st = getImage(getCodeBase(),"arc.gif");
Image img2nd = getImage(getCodeBase(),"akiha.gif");

mt.addImage(coinImg[0] ,0);
mt.addImage(coinImg[1] ,1);
try{
    mt.waitForAll();
}catch(InterruptedException e){
    System.out.println("error");
}
coinImg[0] = img1st;
coinImg[1] = img2st;

としてしまっていたため、AppletViewerでは動いたのですがブラウザではヌルポが出てました。
つか、なんで下のでヌルポでなかったんだろ・・・

AppletViewerを過信してはいけないと言うことです。


当方の確認環境
開発環境:JSDK1.4 + Eclipce2.1.3
テスト環境:Windows98 Second Editionの素の状態(VMware上)


戻る