文系エンジニアの備忘録

文系ですがエンジニアです。

javaサーブレットのコンパイルの話

基本的なことですが、時々忘れてしまって検索する羽目になるので備忘録。

サーブレットは"HttpServlet"クラスを継承しておりHttpServletクラスの様々なメソッドを利用しているらしい。

なのでHttpServletが存在するクラスパスを指定してあげないとClassNotFoundになりコンパイルがこける。

 

まずはクラスパスを指定しないでコンパイルしてみると

 

f:id:kuwwta:20160512112630p:plain

上図のように見事にコケる。

関連クラスを見つけられないからだと思う。

 

そこで-classpathオプションでHttpServletクラスを含むservlet-api.jarを指定して上げる

ちなみに"servlet-api.jar"は"[Tomcatホーム]/lib"に含まれるので環境変数やパスを通してない場合はフルパスで指定する。

 

結果↓

f:id:kuwwta:20160512120909p:plain

コンパイルが通っているのがわかる。

 

以上

 

※何か間違っていたり、こうしたほうがいいということがあればどしどしコメントください。

javaはほぼ独習なのでめっちゃよろこびます。

 

----追記----

ちなみにサーブレットコンパイルするときに"-d"オプションを使って"classes"フォルダに落としておくといちいちコピーしなくても便利なのでいつもしてます。

(ちょっとあほそうなのでなにかいい方法があればご教授ください、、)