• 締切済み

javax.servlet は存在しませんと出ます。

JAVA初心者です。 Tomcat5.0をインストールしてサーブレットをコンパイルしようとするのですが以下のようなコメントが出て上手くいきません。 PATHの設定が原因だと思うのですがインターネットで色々調べたのですが分かりません。PATHの意味がいまいち分かっていませんがよろしくお願い致します。 システム環境変数は CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 5.0 JAVA_HOME C:\Program Files\Java\jdk1.6.0_15 ユーザー変数は 変数名 path 変数値 c:\j2sdk1.4.2\bin エラー内容が c:\javasrc>javac HelloServlet.java HelloServlet.java:5: パッケージ javax.servlet は存在しません。 import javax.servlet.*; ^ HelloServlet.java:6: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.*; ^ HelloServlet.java:8: シンボルを見つけられません。 シンボル: クラス HttpServlet public class HelloServlet extends HttpServlet{ ^ HelloServlet.java:10: シンボルを見つけられません。 シンボル: クラス HttpServletRequest 場所 : HelloServlet の クラス public void doGet(HttpServletRequest req,HttpServletResponse res) ^ HelloServlet.java:10: シンボルを見つけられません。 シンボル: クラス HttpServletResponse 場所 : HelloServlet の クラス public void doGet(HttpServletRequest req,HttpServletResponse res) ^ HelloServlet.java:11: シンボルを見つけられません。 シンボル: クラス ServletException 場所 : HelloServlet の クラス throws IOException,ServletException { ^ エラー 6 個 になります。

みんなの回答

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.5

#4です。誤りがあったので訂正します。 例2) 誤 c:\javasrc><JAVA_HOME>\javac -classpath ...... 正 c:\javasrc><JAVA_HOME>\bin\javac -classpath ...... <JAVA_HOME>はご自身の環境のjavaのインストールフォルダに置き換えて使用してくださいね

kojibu
質問者

お礼

色々とご迷惑をお掛けしました。なんとか出来るようになったようです。おそらく再起動をかけたことによるのではないかと思っています。皆様、色々とご尽力頂き誠にありがとうございました。

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.4

※説明の便宜上、sdkのインストールフォルダを<JAVA_HOME>としています。 >色々と試していたらjavacが認識されなくなりました。 >c:\javasrc>javac >'javac' は、内部コマンドまたは外部コマンド、 >操作可能なプログラムまたはバッチ ファイルとして認識されていません。 何をしたのかわからないと認識されなくなった原因までははっきりしませんが 少なくとも言えるのは環境変数pathできられているフォルダに javac.exeファイルが存在しない(あるいはそのフォルダ自体存在していない)ということです。 直すには環境変数pathに正しくjavac.exeファイルの存在するフォルダ(即ち「<JAVA_HOME>\bin」)を示してやる必要があります。 まぁ取り急ぎコンパイルするだけならわざわざPATHは通さなくてもよいですが‥。 例えば、cdコマンドで<JAVA_HOME>\binまで移動してjavac.exeを使用してもいいですし、 javac.exeを絶対パスで指定してもコンパイルできます。 例1) <JAVAHOME>\bin>javac -classpath "C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar" "C:\javasrc\HelloServlet.java" ※コンパイルされたファイル(HelloServlet.class)は「<JAVAHOME>\bin」に作成されます。 例2) c:\javasrc><JAVA_HOME>\javac -classpath "C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar" HelloServlet.java ※コンパイルされたファイル(HelloServlet.class)は「d:\javasrc」に作成されます。 例1、例2ともにtomcatのインストールフォルダが「C:\Program Files\Apache Software Foundation\Tomcat 5.0」の場合の話です。

  • kztk
  • ベストアンサー率53% (59/110)
回答No.3

CATALINA_HOMEから想像するに、 javac -classpath "C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar" HelloServlet.java でいけると思います、たぶん。 もしダメだったらTOMCATのインストール配下でservlet-ap.jarを探してその場所をclasspathに指定してください。 あと、 JAVA_HOMEのC:\Program Files\Java\jdk1.6.0_15 と PATHのc:\j2sdk1.4.2\bin から、少なくともJDKが2つ(1.6.0と1.4.2)インストールされているようですが、TOMCATはどちらで動くのでしょうか。 TOMCATを1.6.0で動かすならコンパイルも1.6.0でしておくべきです。

kojibu
質問者

お礼

ありがとうございます。 色々と試していたらjavacが認識されなくなりました。 c:\javasrc>javac 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ユーザー環境変数が path C:\j2sdk1.4.2_04\bin JAVA_HOME C:\j2sdk1.4.2_04 システム環境変数が Path %SYSTEMROOT%\system32;%SYSTEMROOT%;%SYSTEMROOT%\COMMAND;%SYSTEMROOT%\system32\WBEM;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\borland\bcc55\bin;%JAVA_HOME%\bin 私が思うにシステム環境変数の「JAVA_HOME」で ユーザー環境変数の「JAVA_HOME」に飛んで「C:\j2sdk1.4.2_04」が認識されると思うのですがされません。また、そうであるならばユーザー環境変数のpathは必要ないと思うのですが・・。 振り出しに戻りましたがなかなか解決しません。どなたかお知恵を拝借出来ればと思います。

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.2

javaxから始まるパッケージはjavaの拡張パッケージ(eXtended package)を表すので 基本的にはjdkに含まれていません。 ※jdk 1.6ではjavax.jwsなどが含まれており、必ずしも含まれないわけではないようなんですが‥  javax.jwsはJAX-WSの担当でJ2SEとは違うってことで、SUNの中では拡張として扱っているのかなぁ。わかりにくい。。 servletやjspなどはj2ee(=Java EE)の担務なので通常はAPサーバで提供しているjarを利用します。 tomcatの場合、servlet関連のパッケージはservlet-api.jarといった名前で提供されているので それをクラスパスに含めればコンパイルが通るようになるはずです。 > 環境設定はなんでこんなに難しいのでしょうか。 慣れの問題でしょうが、TOMCATは文献も多いですし比較的楽なほうですよ。 PATHとかは必ずしもきる必要はないですし。(ていうかEclipseなどを使っていると コンパイラやクラスパス(ビルドパス)はEclipse上で設定するから 最近はいちいち設定するほうが少ないと思いますよ) これを生業としているのかは存じませんが、これで音をあげていると 後々もちませんよ。

kojibu
質問者

お礼

ご協力ありがとうございます。 このままでは後々もたないかもしれません。家庭にも悪影響が出始めてきました。これを生業にはしていないのがせめてもの救いです。

  • kztk
  • ベストアンサー率53% (59/110)
回答No.1

PATHは関係ありません。 PATHに「c:\j2sdk1.4.2\bin」と設定するのは、コマンドプロンプトで c:\javasrc>javac HelloServlet.java と打ったときに、"javac"というプログラムを見つけるためです。 c:\j2sdk1.4.2\binにPATHが通っているので、c:\j2sdk1.4.2\bin\javac.exeが見つかり、コンパイルができるわけです。PATHがないと「javacって何よ?」となります。 パッケージ javax.servlet は存在しません。 となるのはPATHではなくCLASSPATHの問題です。 質問者さんのプログラムは import javax.servlet.*; のようにjavax.servletパッケージを使用しているのに、それがどんなパッケージなのかをjavacに伝えていないからです。 CLASSPATHをキーワードにもう一度調べてみましょう。

参考URL:
http://java-house.jp/ml/archive/j-h-b/021880.html
kojibu
質問者

お礼

ありがとうございます。 システム環境変数を変更していたら症状が悪化しました。 コンパイルが出来なくなり下記のメッセージが出るようになりました。 基に戻しても治らないようです。 c:\javasrc>javac HelloServlet.java 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ユーザー変数は path c:\j2sdk1.4.2\bin システム環境変数は CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 5.0 JAVA_HOME C:\Program Files\Java\jdk1.6.0_15 環境設定はなんでこんなに難しいのでしょうか。

kojibu
質問者

補足

システムの復元をして、何とか振り出しに戻りました。 相変わらずエラー6個の壁が高い・・。