I have a Servlet class I made to handle functions I don't want to repeat on every Servlet I have. I'm still working on it (i.e. it still only loads index.jsp and not other files).
public class MyServlet extends HttpServlet {
public MyServlet () {
super();
}
public void loadView (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
response.setContentType("text/html;charset=UTF-8");
System.out.println("MyServlet::LoadView() success");
dispatcher.forward(request, response);
}
}
My Servlet is as follows
@WebServlet(name = "EditServlet", urlPatterns = {"/content/edit"})
public class EditServlet extends Library.MyServlet {
public EditServlet () {
super();
}
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("EditServlet loaded");
}
}
I am however, unable to compile my code:
SEVERE: Exception while deploying the app [ContentManagement] : (class: contentmanagement/content/EditServlet, method: <init> signature: ()V) Constructor must call super() or this()
update
Ok, removing void
on my constructors and calling super();
got the must call first
portion to go away, but it's still saying I have to call super despite that it's already being called.
update
I don't understand the responses below.... they keep saying to put super()
within the constructor, when my examples already show that being done, AND it is the first line of code. Any other advice would be appreciated.
Any thoughts?
This is now a non-issue. I do not know what resolved this issue, but with multiple changes and rebuilding my app from the ground up I am no longer experiencing this issue
Your problem was:
method: <init> signature: ()V) Constructor must call super() or this()
It seems like VerifyError
symptom. Cleaning and rebuilding the project should resolve the problem, see also:
Furthermore, you can remove your constructors with a super()
single-line. The JVM does it for you with a default (implicitly hidden) constructor. So, clear these unnecessary lines:
public MyServlet () {
super();
}
and
public EditServlet () {
super();
}
You would have to explicitly call super()
if you needed to write additional business lines in the constructor.
And how does the constructor of Library.MyServlet
look?. As a note, if the super
keyword is to be used in a constructor, it has to be on the first line. Same thing for this
.
Have you tried deleting the empty constructor? Apparently, you're not using it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With