2011-07-26 13 views
19

私のウェブサイトがレンダリングしようとしているjspファイルの1つにjavax.servlet.jsp.JspExceptionがあります(survey.jsp)。しかし、スタックトレースはjspの特定の行に失敗しますが、失敗した行番号(survey_jsp.java:787)はコンパイルされたJSPファイルのようです。どのような行がこの例外をスローしているのか知るために、そのようなファイルはどこにありますか?コンパイルされたJSP Java(* __ jsp.java)ファイルはどこにありますか?

おかげ

EDIT:ウィルは以下のコメントで示唆されているようにTomcatを使用している場合、これらのファイルは/workディレクトリに住んでいます。

+7

下にありましたか?これは、アプリケーションサーバー(および設定)によって異なります。 Tomcatのデフォルトは/ workディレクトリです。 –

+0

私はtomcatを使用しています。 – Sam

答えて

48

コンパイル済みのJSPファイルは、デフォルトでTomcat環境の/workフォルダにあります。 Catalinaというサブフォルダがあり、デフォルトでlocalhostというドメイン名を表すサブフォルダがあります。順番に、プロジェクトフォルダにパッケージ階層org.apache.jspと、コンパイル済みのJSPファイルが含まれている必要があります。具体的な問題への無関係

Tomcat 
|-- backup 
|-- bin 
|-- conf 
|-- lib 
|-- logs 
|-- temp 
|-- webapps 
`-- work 
     `-- Catalina 
      `-- localhost 
       `-- projectname 
        `-- org 
          `-- apache 
           `-- jsp 
            |-- survey_jsp.class 
            `-- survey_jsp.java <--- here 

、通常は問題の本当の根本原因についての詳細が含まれていJspExceptionのスタックトレースで根本原因部分があるはずです。スタックトレースでさらに読む。ところで、未処理のJavaコードをJSPファイルに入れることはbad practiceと考えられますか?あなたが今直面しているように、デバッグするのが難しくなります。 Oracleのドキュメントから

+0

私はMVC構造体を強制するためにstrutsを使用しているので、JSP内で未処理のJavaが使用されていません。 "Beanを見つけることができない:" blah "in any scope" – Sam

+0

生成されたJavaソースコードを調べることは、追加の利点を提供しないため、エラーが発生します。それはあなたのためにすべてのアブラカダブラになるだけです。実際の作業は*実際の*エラーメッセージ(最後にスタックトレースで調べたもの)を理解し、それに応じてビュー/モデル/構成を修正することで行う必要があります。私。 Bean "blah"がスコープ内にあることを確認してください。 – BalusC

+0

生のJavaコードtbhなしでJSPファイルを見たことはありません。 –

5

ページがコンパイルされなかった場合は、<tomcat>/work/*の下のどこかで見つかるはずです。完全なパスは環境によって異なります。そこに見つからない場合は、Tomcatをデバッグモードで起動する必要があります。.javaファイルをコンパイルできませんでした(Tomcat 7)。

0

javax.servlet.jsp.JspException :: JSPエンジンに知られている一般的な例外。捕捉されないJspExceptionsは、エラーページ機構の呼び出しをもたらす。

私も、私は

に私のコードで私のアドバイススクリプトレットを使用するたびに、これを取得するために使用:scripltesを使用していないとしても、可能性があります簡単ですが、すべての原因の点、その大きな頭でコードを開発するようです - 痛みへのscripletsコードを維持する。信頼してください

3

JavaEEを学ぶためにIntellijを使用していますが、jspをサーブレットに変換する際にいくつかの機能を表示するために、ファイルを見つける必要があります。

私は<tomcat_home>/work/*の下に見つかりませんでした。私は最終的にファイルが~/.IntelliJIdea15/system/tomcat/フォルダ(木構造は~/.IntelliJIdea15/system/tomcat/から表示されています)の下にあることがわかります!

Name related to project name 
|-- conf 
|-- logs 
`-- work 
     `-- Catalina 
      `-- localhost 
       `-- projectname and type 
        `-- org 
          `-- apache 
           `-- jsp 
            |-- survey_jsp.class 
            `-- survey_jsp.java <--- here 

あなたがまだのIntelliJのホームフォルダの下にそれを見つけることができない場合は、適した親フォルダに

find . | grep 'nameOfYourJsp_jsp.java' 

を使用してみてくださいする必要があります。私の場合は

+0

これは、IDEがサーバーから展開制御を引き継ぐように構成されている場合にのみ該当します。これは、通常の/本番環境では当てはまりません。 – BalusC

+0

私はそれを設定しませんでした。それはintellijのデフォルトの動作ですか? – Tony

1

は、コンパイルされたJSPは、あなたがどのようなアプリケーションサーバを使用している

/var  
    |--cache  
     |-- tomcat8  
      |--Catalina 
        |--localhost 
          |--projectname 
           |-- (etc...) 
関連する問題