オンライン健康相談、gooドクター

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 個

になります。

gooドクター

A 回答 (5件)

#4です。

誤りがあったので訂正します。

例2)
誤 c:\javasrc><JAVA_HOME>\javac -classpath ......

正 c:\javasrc><JAVA_HOME>\bin\javac -classpath ......

<JAVA_HOME>はご自身の環境のjavaのインストールフォルダに置き換えて使用してくださいね
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/11/17 23:12

※説明の便宜上、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」の場合の話です。
    • good
    • 1

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でしておくべきです。
    • good
    • 1
この回答へのお礼

ありがとうございます。

色々と試していたら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は必要ないと思うのですが・・。

振り出しに戻りましたがなかなか解決しません。どなたかお知恵を拝借出来ればと思います。

お礼日時:2009/11/15 22:28

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上で設定するから
最近はいちいち設定するほうが少ないと思いますよ)

これを生業としているのかは存じませんが、これで音をあげていると
後々もちませんよ。
    • good
    • 0
この回答へのお礼

ご協力ありがとうございます。

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

お礼日時:2009/11/15 22:31

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

この回答への補足

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

補足日時:2009/11/12 23:48
    • good
    • 0
この回答へのお礼

ありがとうございます。

システム環境変数を変更していたら症状が悪化しました。
コンパイルが出来なくなり下記のメッセージが出るようになりました。
基に戻しても治らないようです。

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

環境設定はなんでこんなに難しいのでしょうか。

お礼日時:2009/11/12 23:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング