The serializable class XXXServlet does not declare a static final serialVersionUID field of type longという警告
Google App Engine Java 8でServletを実装していたら警告が表示された
どんな警告かというと、本記事のタイトルとなっている The serializable class XXXServlet does not declare a static final serialVersionUID field of type long という警告である。
ソースコードは純粋にリクエストに対してそのままjspを表示させるというシンプルなものである。
import java.io.IOException; 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( name = "HogeServlet", urlPatterns = {""} ) public class HogeServlet extends HttpServlet implements BaseInterface { @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ request.getRequestDispatcher("/hoge.jsp").forward(request, response); } }
解決策としてserialVersionUID変数にlong型の変数を設定することで、いったん、警告を解除することができた。
import java.io.IOException; 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( name = "HogeServlet", urlPatterns = {""} ) public class HogeServlet extends HttpServlet implements BaseInterface { private static final long serialVersionUID = 1L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ request.getRequestDispatcher("/hoge.jsp").forward(request, response); } }
ただこれ、根本解決ではないような気がするんだよなぁ〜。
個人運用の小さなシステムだったら問題ないと思うんだけど、大規模システムだと怪しい気がする。