【发布时间】:2012-01-23 04:57:33
【问题描述】:
我创建了一个 Servlet 类来处理我不想在我拥有的每个 Servlet 上重复的功能。我仍在处理它(即它仍然只加载 index.jsp 而不是其他文件)。
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);
}
}
我的Servlet如下
@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");
}
}
但是,我无法编译我的代码:
SEVERE: Exception while deploying the app [ContentManagement] : (class: contentmanagement/content/EditServlet, method: <init> signature: ()V) Constructor must call super() or this()
更新
好的,在我的构造函数上删除 void 并调用 super(); 得到了 must call first 部分消失,但它仍然说我必须调用 super 尽管它已经被调用了。
更新
我不明白下面的回复....他们一直说将super() 放在构造函数中,而我的示例已经显示已完成,并且它是第一行代码。任何其他建议将不胜感激。
有什么想法吗?
现在这不是问题。我不知道是什么解决了这个问题,但是通过多次更改并从头开始重建我的应用程序,我不再遇到这个问题
【问题讨论】:
-
如果你得到一个错误,指出它必须是第一个,你是否尝试将它放在构造函数中?
-
构造函数没有任何返回类型。删除 MyServlet 和 EditServlet 之前的空白。代码可以编译吗?
-
您在使用 Netbeans 吗?我记得一个关于这个 Netbeans 怪癖的类似问题:stackoverflow.com/questions/6560988/… 换句话说,你的构建很脏。例如,您已经通过文件资源管理器而不是 IDE 手动重命名/移动了项目中的类文件。顺便说一句,这些构造函数是完全没有必要的。没有它们,servlet 应该也能正常工作(当然,在你清理了肮脏的类路径之后)。
-
@BalusC - 是的,我正在使用 Netbeans。我已经尝试重构文件并重命名类和东西,但它并没有解决问题。我还删除了项目并重新创建了它。
-
如果你创建一个全新的项目,只有一个简单的 Hello World
@WebServlet,它在doGet()中基本上是response.getWriter().write("Hi")?总而言之,这绝对是 Netbeans 的问题。哦,请使用@nickname通知其他人关于评论回复不是他们自己的帖子。我没有收到您最后评论的通知。
标签: java oop jakarta-ee build compiler-errors