java - Tomcat java.lang.NoClassDefFoundError : Could not initialize class

标签 java noclassdeffounderror tomcat8

完整错误:java.lang.NoClassDefFoundError:无法初始化类 lt.maze.dao.DAO

DAO 类是在我的 LoginServlet 中使用的。它已编译并部署,我检查了WEB-INF/classesDAO.class 存在。

为什么没有加载?我应该手动将它们添加到我的类路径中吗? (我有 list 文件来加载我的属性文件)。

LoginServlet.java:

@WebServlet(name = "LoginServlet", urlPatterns = { "/login" })
public class LoginServlet extends HttpServlet {

@Override
public void init() throws ServletException
{
    System.out.println("System. out. Its online.");
    getServletContext().log("LoginServlet initialised");
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    getServletContext().log("Http request. Request URI: " + request.getRequestURI());
    System.out.println("Http request. Request URI: " + request.getRequestURI());
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    if(username == null || password == null) {
        response.sendError(401);
    } else {
        UserDAO userDAO = DAO.getUserDAO();
        User user = userDAO.find(username, password);
        if(user == null) {
            response.sendError(401, "Invalid username or password");
        } else {
            String sessionToken = SessionTokens.getSessionToken();
            response.addCookie(new Cookie("session-token", sessionToken));
            getServletContext().log("Valid connection. token:"+sessionToken);
        }
    }

}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    getServletContext().log("Request received via GET.");
    System.out.println("Requeswt received via GET");
}

}

完整的堆栈跟踪:

18-May-2015 14:49:35.133 SEVERE [http-nio-8080-exec-1]       org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [LoginServlet] in context with path [/ChatApp] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class lt.maze.dao.DAO
at lt.maze.LoginServlet.doPost(LoginServlet.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

最佳答案

如果异常从类的构造函数或静态初始化程序中传播出来,那么您还会得到 java.lang.NoClassDefFoundError: Could notinitialize class ...

关于java - Tomcat java.lang.NoClassDefFoundError : Could not initialize class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30302612/

相关文章:

java - 为 Tomcat 启用目录列表

java - 如何启动基于图形的工具

java - 无法在 native 扫描仪上读取文件两次

java - java中Iterator()的时间复杂度

Java Swing - 如何使关闭对话框不会关闭整个程序?

java - Tomcat 8.5 上的 Ant 重新部署失败 - 在流模式下出现 java.net.HttpRetryException : cannot retry due to server authentication,

java - 没有找到类定义

java - Appletviewer 抛出 java.lang.NoClassDefFoundError 异常

java - BouncyCaSTLe 类上的 NoClassDefFoundError

java-8 - 未爆炸的 war 导致 Apache Tomcat 8.0.41 中的部署失败