Servletのコンパイル
Servletを使ってアプリケーションを開発してみた。
ソースはこんな感じです。
package servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/FowardServlet") public class FowardServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // forward RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/forward.jsp"); dispatcher.forward(request, response); } }
前に書いたJSPファイルをサーブレットから呼び出すアプリケーションである。
さーコンパイル!
$ javac FowardServlet.java FowardServlet.java:5: エラー: パッケージjavax.servletは存在しません import javax.servlet.RequestDispatcher; ^ FowardServlet.java:6: エラー: パッケージjavax.servletは存在しません import javax.servlet.ServletException; ^ FowardServlet.java:7: エラー: パッケージjavax.servlet.annotationは存在しません import javax.servlet.annotation.WebServlet; ^ FowardServlet.java:8: エラー: パッケージjavax.servlet.httpは存在しません import javax.servlet.http.HttpServlet; ^ FowardServlet.java:9: エラー: パッケージjavax.servlet.httpは存在しません import javax.servlet.http.HttpServletRequest; ^ FowardServlet.java:10: エラー: パッケージjavax.servlet.httpは存在しません import javax.servlet.http.HttpServletResponse; ^ FowardServlet.java:13: エラー: シンボルを見つけられません public class FowardServlet extends HttpServlet { ^ シンボル: クラス HttpServlet FowardServlet.java:12: エラー: シンボルを見つけられません @WebServlet("/FowardServlet") ...
あれ??
たくさんエラーたちが出てきました。
どうやらいろいろとインポートできていないらしい…
調べるとクラスパスでservlet-api.jarをささなければならなかった。
探すこと1時間ありました。 Tomcat7をインストールした時に一緒に落ちてきたみたい。
今度はクラスパスを指定して挑戦
$ javac -classpath /usr/share/tomcat7/lib/servlet-api.jar FowardServlet.java
うまくいきました!
環境変数にTomcat7の場所を設定する方法が一般的らしいですね。
この後すぐに行いました。