Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自servlet的NoClassDefFoundError_Java_Servlets_Noclassdeffounderror - Fatal编程技术网

Java 来自servlet的NoClassDefFoundError

Java 来自servlet的NoClassDefFoundError,java,servlets,noclassdeffounderror,Java,Servlets,Noclassdeffounderror,正在为基本MVC应用程序进行试运行。正在获取类MovieDAO的NoClassDefFoundError MovieDAO位于:com.library.model servlet MovieController位于:com.library.web中 已成功编译Servlet,并正确导入了MovieDAO类 在Tomcat 8.0/webapps/Planner/WEB-INF/classes中复制了目录结构的精确副本(Planner是项目根文件夹)。在web服务器上测试运行期间获取NoClass

正在为基本MVC应用程序进行试运行。正在获取类MovieDAO的NoClassDefFoundError

MovieDAO位于:com.library.model servlet MovieController位于:com.library.web中

已成功编译Servlet,并正确导入了MovieDAO类

在Tomcat 8.0/webapps/Planner/WEB-INF/classes中复制了目录结构的精确副本(Planner是项目根文件夹)。在web服务器上测试运行期间获取NoClassDefFoundError

Servlet代码段:

package com.library.web;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import com.library.model.*;
import com.library.model.beans.*;

public class MovieController extends HttpServlet {

     public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        String selectedMovie = request.getParameter("title");

        MovieDAO movieDAO = new MovieDAO();
XML:

完整堆栈跟踪:

6-Jun-2015 10:58:50.665 SEVERE [http-nio-8080-exec-2] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Movie Index Page] in context with path [/Planner] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: com/library/model/MovieDAO (wrong name: MovieDAO)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at    org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
at com.library.web.MovieController.doGet(MovieController.java:16)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
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:617)
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.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

显然是目录/包的错误放置问题。有人能指出到底是什么问题吗?

您的
MovieDAO
类必须部署到您的应用程序
WEB-INF/classes
文件夹或
WEB-INF/lib
中的jar中。它可能丢失,从而导致您的
NoClassDefFoundError

java.lang.NoClassDefFoundError: com/library/model/MovieDAO (wrong name: MovieDAO)
将此错误分为两部分

  • java.lang.NoClassDefFoundError:com/library/model/MovieDAO

    这表明您的
    MovieController
    正在尝试搜索一个类
    MovieDAO
    ,该类具有包声明
    package com.library.model

  • (错误名称:MovieDAO)
    :基本上,这个名称是找到的类的完全限定类名。这说明它找到了类
    MovieDAO
    ,但没有任何包声明


  • 因此,您可以尝试重新编译
    MovieDAO
    类,并将其放置在类下的正确目录中。同时搜索classes文件夹,查看是否已将其错误地放置在其他目录中,如果找到,则将其删除

    是否可以共享
    MovieDAO
    类的源代码以及错误的完整堆栈跟踪?看起来
    MovieDAO
    未部署到
    WEB-INF/classes/com/library/model
    where
    MovieController
    希望找到它我希望你指的是WEB-INF/classes是的,我指的是WEB-INF/classes。抱歉。在查询Amit.rk3中更新了MovieDAO代码段。该.class文件位于/classes下。您确定正在运行您认为正确的代码吗?您是否有多个Tomcat安装?
    6-Jun-2015 10:58:50.665 SEVERE [http-nio-8080-exec-2] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Movie Index Page] in context with path [/Planner] threw exception [Servlet execution threw an exception] with root cause
    java.lang.NoClassDefFoundError: com/library/model/MovieDAO (wrong name: MovieDAO)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at    org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    at com.library.web.MovieController.doGet(MovieController.java:16)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    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:617)
    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.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
    
    java.lang.NoClassDefFoundError: com/library/model/MovieDAO (wrong name: MovieDAO)