我的小项目使用的数据库表包含有关员工(姓名,电话,电子邮件)的数据。它通过Web浏览器提供员工列表的前端管理(插入新闻员工,编辑当前,删除现有员工)。
每当我在Eclipse上运行Tomcat服务器上的项目(显示所有员工的列表)时,我都会收到以下错误:
显示java.lang.NullPointerException com.myproject.crud.EmployeesListServlet.doGet(EmployeesListServlet.java:24) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
第24行:request.setAttribute("employeess", employeesRepo.listEmployeess());
EmployeesListServlet
package com.myproject.crud;
import java.io.IOException;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
@WebServlet("/employees/")
public class EmployeesListServlet extends HttpServlet {
@Inject @JDBC
private EmployeesRepository employeesRepo;
public EmployeesListServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("employeess", employeesRepo.listEmployeess());
getServletContext().getRequestDispatcher("/WEB-INF/pages/employees-listing.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
答案 0 :(得分:1)
您的previous question确认您试图关注this tutorial。但它的目标是Caucho Resin,这是一个完整的Java EE应用服务器,可以支持所有Java EE功能,而无需添加更多JAR。
但是,您正在使用Tomcat。 Tomcat是一个准系统JSP / Servlet容器,它不支持所有其他Java EE功能。它仅支持JSP和Servlets。作为CDI一部分的@Inject
首先不能在Java servlet代码中导入。你得到它进行编译只能意味着你下载了一些包含javax.inject.Inject
的JAR并将其放在运行时类路径中。
这不是如何在Tomcat中安装CDI的方式。你需要做更多的工作。另见其他Weld (the CDI reference implementation) documentation on Tomcat。
但是我建议停止阅读该教程,它对Java EE来说并不是一个非常好的介绍(@JDBC
注释本身也有点" wtf?&# 34;)并寻找另一个教程,或更好的,一本真实的书。如果您想认真学习Java EE,那么我还建议用真正的Java EE应用服务器替换Tomcat,例如TomEE,Glassfish,JBoss AS等。所有这些都带有CDI开箱即用(JPA和EJB比JDBC好得多)。