- ベストアンサー
JSPのコンパイル?
JSPのソース量が多いとエラーとなって しまうのですが、何をもってしてエラー となるのでしょうか? その部分とは<% %>部分のjavaなのか javascript部分なのかを知りたいのですが。 どなたかお願いできますでしょうか? あと、最大どれくらいまでが可能なので しょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
JSPはアプリケーションサーバによって、サーブレットに 変換、コンパイルされ実行されますよね。 このとき、JSPのコード量が多いと、変換後のサーブレット に実装されるメソッドのサイズが大きくなってしまいまいます。 確か、JavaVMでは、メソッドのサイズは65536Byte以下 に制限されたいたと記憶しています。
その他の回答 (4)
- pcbeginner
- ベストアンサー率46% (261/560)
う~ん。 ログなどがないとなると原因の追究は難しいですね。 65536 って言ったって2の16乗ってことしか分かりませんから。(^^;A ちなみにメモリさえ豊富にあれば、JSPのソースの量の制限なんてありません。
お礼
ご回答ありがとうございます。 >ログなどがないとなると原因の追究は難しいですね。 >65536 >って言ったって2の16乗ってことしか分かりません >から。(^^;A ですよね~。。。 申し訳ないです。 >ちなみにメモリさえ豊富にあれば、JSPのソースの >量の制限なんてありません。 そうなんですか? まだ、動作させていないのでなんとも言えない のですが、不安です。。。(_ _。)・・・シュン
- pcbeginner
- ベストアンサー率46% (261/560)
えっと、とりあえず、そのエラーがどんな内容なのかをもっと詳しく書かないと適切な回答が得られないと思います。 できればエラーログなりを貼り付けるといいですよ。 で、ここからは想像というか、憶測の話です。 自分はJSPのコンパイルじゃなくて、普通のjavaアプリをコンパイルするときに面倒なので >javac *.java でやっていました。 すると…コンパイルなのにOutOfMemoryErrorが発生しました。(笑) パッケージ以下のかなりのソースを修正して1回でコンパイルしようとしたら、javaコンパイラ(実はこいつもVMで動いている)のメモリが足りなくなってしまったのでした。 ので、質問者さんのJSPがかなり膨大な大きさのJSPだったとしたらこのケースにあてはまる"かも"しれません。 ちなみにこの場合は-Jオプションを付けるとjavaコマンドのオプションが指定できるので、-mxオプションを指定してメモリの割り当てを多くして解決しました。 もしこのケースと同じならサーバー側のVMの使用するメモリの量を増やしてあげればいいと思います。
お礼
ご回答ありがとうございます。 純粋なJAVAではOutOfMemoryErrorが発生した事 があるので対処できたのですが、JSPとなると あまり経験がなくて。。。 エラーログが残っていないのでログはたしか 65536との数字が出ていたのを覚えています。 その時は”なんだ制限があるんだ~”位にしか 思っていなかったのですが、気になってしまって。。。 VMのメモリ割り当ては関係あるかもです。 参考になりました。挑戦してみます。
- xeno-field
- ベストアンサー率66% (18/27)
JSPでソースの量が多いとエラーになるとは初めて知りました… 実際はどうなのか判りませんが私は過去一度もそのような事はないです。 後はLancerVIIさんと同じ意見ですね… もし、ソースの量が多くてエラーになったとしたらJSPのソースの記述を簡潔にするしかないでしょう、 っと言うよりも必要以上に長いソースと言う事は無駄が多いプログラムを組んでいる可能性があります。 もう少し見直して簡潔にプログラムを組むように心がけた方がいいのかな? デザインパターンやアルゴリズムの勉強をお勧めします。 っと、エラーの内容が判らないのですが質問を見る限りjk_beckさん自信もエラーの内容が判ってないのかな? エラーログのチェックやSystem.out.println()などを使って 効率的にどの個所でどのようなエラーがでてるかを確認しましょう☆
お礼
ご回答ありがとうございます。 ソースの量が多いのはちょっと訳がありまして 全ての項目を動的に作成している為、どうして も判断文が多くなってしまっている為です。 onload内で設定する方法もありますが、フレーム を分けている為、フレーム間の項目参照に問題 がでてくるのでonloadでも難しくて。。。 実際に判断文を少しずつけずっていったのですが その場合、ある時点から画面が表示されるように なったので最大値?割当メモリ?のようなもの があるのかと。。。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 エラーというのは、ページが表示された後に ブラウザの左下にエラーが出ているのか、 または、サーバーエラーがおきているのでしょうか? 前者でしたらJavaScriptのエラーでしょうし、 後者ならJSP内のJavaソースに問題があると思います。
お礼
ご回答ありがとうございます。 実際のサーバでのエラーです。 JSPのJAVA部分がコンパイルされるときに エラーとなってしまっているように感じる のですが、そこをどのように対処すれば いいのかに困っていて。。。
お礼
ご回答ありがとうございます。 >確か、JavaVMでは、メソッドのサイズは >65536Byte以下に制限されたいたと記憶しています。 なるほど。。。 これを回避する方法はやはりサーブレット側で 処理を行う様にするしかないですかね~・・・