- - PR -
HTTPステータス500エラーが解消できません。
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-05-13 13:27
JSPからServletにデータを渡したいのですが、以下のエラーが出てなかなか解決できません。
------------------------------------------------------------------------------------------ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: パス /demo2008/servlet/social.RegisterServlet にサーブレットインスタンスを割り当てられません org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:389) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:134) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 原因 java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(ClassLoader.java:620) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) java.net.URLClassLoader.defineClass(URLClassLoader.java:260) java.net.URLClassLoader.access$100(URLClassLoader.java:56) java.net.URLClassLoader$1.run(URLClassLoader.java:195) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(URLClassLoader.java:188) java.lang.ClassLoader.loadClass(ClassLoader.java:306) sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) java.lang.ClassLoader.loadClass(ClassLoader.java:251) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1277) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208) org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:370) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:134) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) ---------------------------------------------------------------------------------------- 以前このエラーが急にできてたりして、時間がたつと直りコンパイルしてTomcatを再起動するとこのエラーが再びでてくるという現象がおきました。 今回は違うアプリで新たに開発を試みてるところこのエラーがすぐに出てきました。 tomcatのbin/setclasspath.shの # Set standard CLASSPATH if [ "$1" = "debug" -o "$1" = "javac" ] ; then CLASSPATH="$JAVA_HOME"/lib/tools.jar fi の部分のCLASSPATH=...の行を、CLASSPATH=$CLASSPATH:"$JAVA_HOME"/lib/tools.jarに変更 すると直ると調べたらあったのですが、 こちらを直してもうまくいきません。 初歩的な質問かもしれませんが、どなたかご回答いただけるとありがたいです。 お願いします。 ちなみに環境は Linux CentOS5 java 1.5 tomcat 5.5です。 |
|
投稿日時: 2008-05-13 14:29
FD が枯渇してクラスのロードに失敗しているのではないでしょうか。
ログに"Too many open files"などと記録されていませんか? こちらが参考になるかもしれません。 ・BEA トラブルシューティング ガイド > サポート診断パターン http://www.beasys.co.jp/cs/support_news/product_troubleshooting/Too_Many_Open_Files_Pattern.html |
|
投稿日時: 2008-05-14 13:05
>インギさん
ご回答ありがとうございます。 ログを見たところToo many open filesとは記録されてませんでした。 環境設定やパスの問題でしょうか。それともweb.xmlやsever.xmlが誤った記述をしているのでしょうか。 |
|
投稿日時: 2008-05-14 19:23
> java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
これって、common/lib/servlet-api.jarですよね? |
|
投稿日時: 2008-05-14 22:30
>rancoさん
だと思います。 一応/etc/profileにしっかりとservlet-api.jarのパスは通してあります。 またコンパイルのときにもパスを通してやりました。 java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet が原因なのはすべてservlet-api.jar関連のエラーなのでしょうか… それともほかの原因があるのでしょうか。 |
|
投稿日時: 2008-05-15 06:40
助かりました。
http://imatakutin.blogspot.com/2008/03/javalangnoclassdeffounderror.html 意外な盲点? 困っている人多いのでは? TOMCAT起動用の.bash_profileと サーブレットコンパイル用の.bash_profile を分けるしかないかな? |
|
投稿日時: 2008-05-15 12:44
> 一応/etc/profileにしっかりとservlet-api.jarのパスは通してあります。
> またコンパイルのときにもパスを通してやりました。 パスじゃなくてクラスパスが…。 しかも、tools.jarなんてCLASSPATH設定しなくてよいのに…。 余談:CLASSPATH環境変数は無設定にせよ、という説に私は大賛成です。 javac -cp ... java -cp ... がいちばん安心。 |
|
投稿日時: 2008-05-15 15:02
>chuuzakoさん
.bash_profileに書いてある #export JAVA_HOME=/usr/local/jdk1.5.0_13 #export PATH=$PATH:$JAVA_HOME/bin: #export CLASSPATH=.:$JAVA_HOME/lib/tools.jar を消しましたが、ダメでした。 .bash_profileを分けるということはどういうことでしょうか? >rancoさん すいません、クラスパスですね。 無設定というのもありなんですね。 |