「MYSTERY TOWER」制作日記

J++からのIE3と普通のIE3で動作が違う12月19日

昨日は、ブラウザの方のプログラム(Javaのプログラムの事)を組んで
いなかったので、PerlのプログラムをUNIXからしか実行できなかった。
今日は、Javaから、CGIを実行させるプログラムを組んで挑戦してみた。

VJ++からコンパイルして、そのまま実行するが、これは、当然うまくい
かない。サーバーの方に持っていかないと、CGIプログラムがないから
だ。
それで、サーバーの方に持っていって実行してみると、CGIがどうのこう
のという以前に、動かなくなってしまった。動詞やチャットなどのテキ
ストフィールドに文字が入らなくなってしまった。画像もでてきてない。
おかしい。今日は、CGIのプログラムの付け足しただけで、しかも、ま
だそこの部分は、実行してないのに。
僕は、数日前の出来事を思い出した。IE3のバージョンの違いで動かな
い事があったのだ。しかし、今回は、VJ++付属のIE3を使っている。問
題は、ないはずだ。しかも、さっき、コンパイルした後のIE3では、き
ちんと動いていたのだから。
僕は、まず転送をうたがってみた。テキストファイルとバイナリファイ
ルを間違えたのかと思って、もう一回転送してみた。しかし、バグって
るのは、変わらない。
僕は、もう一回コンパイルして、ローカルな環境で動くか確かめた。ど
うやら、ローカルな環境では、うまくいく。そこで、サーバーに転送し
てみた。バグってる。

僕は、何がおかしいのか、必死に探した。で、とりあえず、突き止めた
のは、同じローカルな環境でも、VJ++から起動するIE3と普通に起動さ
せた(つまり、エクスプローラからダブルクリック)IE3で、動きが違
うのだ。正確に言えば、VJ++から起動させたIE3ではバグらず、普通に
起動させたIE3では、バグるのだ。
CGIどころではなくなった。「Javaって、まだまだ、開発環境が整って
ないな〜」と文句をいいながら、どうしようか考える。しかし、さっぱ
り分からない。家に帰って、マイクロソフトに電話しようかと思った。
しかし、昨日までは、うまく行っていたので、昨日付け足したソースを
次々と注釈に変えていった。こうすれば、この変な現象の原因というか
そこのソースがあるために、こうなったという部分がわかるはずだから
だ。
で、次々と注釈に変えては、サーバーに送るという作業を繰り返した。
そして、最後に来て、これを注釈に変えれば、昨日と全く同じプログラ
ムになるというところに来た。で、最後のところを注釈に変えて、サー
バーに送ってみると、うまく動いた。
最後に注釈に変えた部分をよくよく見ると、どこもおかしい所がないよ
うに見える。しかも、ここは、ボタンを押さないと実行されない部分だ。
もちろん、コンパイルのエラーもない。

「はらひれはらろれ〜」という状態になった時に、ふと見ると、なんと
なく、tryとcatchの使い方がおかしいような感じがする。
tryとcatchは、僕は、Javaを使い始めて、はじめて出会ったものでよく
知らない。例外がどうのこうのと書いてあったが、とりあえず、サンプ
ルプログラムを真似しておいた。

で、僕のプログラムのtryとcatchは、こうなっていた。
{
try {
URL url= new URL(getDocumentBase(),"chat/chat2.cgi");
connect=url.openConnection();
}
catch (MalformedURLException e) {return true;}
catch (IOException e) { return true; }
//つないだ後の処理
}

よくわからないが、これは、確かにサーバーにつないだ時は、つないだ
後の処理をするし、つなげなかった時には、catchされる。(と思う。)
でも、これは、普通、tryの中に、つないだ後の処理を入れるのが普通の
ような感じがした。つまり

{
try {
URL url= new URL(getDocumentBase(),"chat/chat2.cgi");
connect=url.openConnection();
//つないだ後の処理
}
catch (MalformedURLException e) {return true;}
catch (IOException e) { return true; }
}

としたのです。そうすると、今までだめだったのが、なんともあっさり
うまくいきました。
このような個所が5〜6個あったので、それを全部直しました。

VJ++さん、頼むからエラーを出してください。

前のページに戻ります