Javatarの日記

36歳ハゲデブがITで一旗あげるためにJavaに挑戦!

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);
  }
}

ただこれ、根本解決ではないような気がするんだよなぁ〜。

個人運用の小さなシステムだったら問題ないと思うんだけど、大規模システムだと怪しい気がする。