首页 文章

java.lang.ClassNotFoundException:org.hibernate.cfg.AnnotationConfiguration

提问于
浏览
2

我遇到了以下问题:我尝试使用Eclipse创建一个简单的Servlep:

@WebServlet(description = "Adress book servlet", urlPatterns = {"/new_address"})
public class CAddressBookServlet extends HttpServlet 
{
    public CAddressBookServlet() 
    {
        super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    private static final long serialVersionUID = 1L;
}

它可以与Tomcat一起使用!但后来我要在我的项目中添加Hibernate功能 . 我只向servlet构造函数添加一行:

@WebServlet(description = "Adress book servlet", urlPatterns = {"/new_address"})
public class CAddressBookServlet extends HttpServlet 
{
    public CAddressBookServlet() 
    {
        super();
        new AnnotationConfiguration();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    private static final long serialVersionUID = 1L;
}

这导致以下错误:

HTTP状态500 - 实例化servlet类时出错org.servlets.CAddressBookServlet类型异常报告消息实例化servlet类时出错org.servlets.CAddressBookServlet说明服务器遇到内部错误,导致无法完成此请求 . 异常javax.servlet.ServletException:实例化servlet类时出错org.servlets.CAddressBookServlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 99)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)org.apache.coyote.http11.AbstractHttp11Processor.process( AbstractHttp11Processor.java:1004)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310)java.util . concurrent.ThreadPoolExecutor.runWorker(Unknown Source)java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)java.lang.Thread.run(Unknown Source)root cause java.lang.NoClassDefFoundError:org / hibernate / cfg / AnnotationConfiguration org.servlets.CAddressBookServlet . (CAddressBookServlet .java:33)sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)java.lang.reflect.Constructor.newInstance(Unknown Source) )java.lang.Class.newInstance0(未知来源)java.lang.Class.newInstance(未知来源)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org.apache.catalina.valves.ErrorReportValve .invoke(ErrorReportValve.java:99)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)org.apache.coyote .http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java :310)java.util.concurrent.ThreadPoolExecutor.runWor ker(Unknown Source)java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)java.lang.Thread.run(Unknown Source)root cause java.lang.ClassNotFoundException:org.hibernate.cfg.AnnotationConfiguration org.apache . catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)org.servlets.CAddressBookServlet . (CAddressBookServlet.java:33)sun.reflect.NativeConstructorAccessorImpl .newInstance0(Native Method)sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)java.lang.reflect.Constructor.newInstance(Unknown Source)java.lang.Class.newInstance0(Unknown来源)java.lang.Class.newInstance(未知来源)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)org .apache.catalina.valves.Access LogValve.invoke(AccessLogValve.java:931)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)org.apache . coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310)java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)java .util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)java.lang.Thread.run(未知来源)注意Apache Tomcat / 7.0.33日志中提供了根本原因的完整堆栈跟踪 .

如何让hibernate与我的servlet一起工作?

2 回答

  • 0

    @Perception有正确的答案 . 您需要将Hibernate库包含在已部署的war文件中 . 您可以将它们放在WEB-INF / lib或在Tomcat认可的目录中 . 我更喜欢WEB-INF / lib位置,因此您不会干扰服务器上的任何其他应用程序 .

  • 2

    我想你错过了注释jar . Download the Annotations

    将下载的jar文件复制到其中一个位置....

    -> Tomcat lib directory
              or
     -> To the folder webapps/< your_project >/WEB-INF/lib
    

    然后重启服务器

相关问题