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

java.lang.ClassNotFoundException:org.hibernate.cfg.AnnotationConfiguration,java,hibernate,servlets,Java,Hibernate,Servlets,我遇到了以下问题: 我试图用Eclipse创建一个简单的Servlep: @WebServlet(description = "Adress book servlet", urlPatterns = {"/new_address"}) public class CAddressBookServlet extends HttpServlet { public CAddressBookServlet() { super(); } protected

我遇到了以下问题: 我试图用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(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源)

根本原因

java.lang.NoClassDefFoundError: org/hibernate/cfg/AnnotationConfiguration CAddressBookServlet.java:33 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源) sun.reflect.delegatingConstructor AccessorImpl.newInstance(未知 Source)java.lang.reflect.Constructor.newInstance(未知源) 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.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源)

根本原因

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) CAddressBookServlet.java:33 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源) sun.reflect.delegatingConstructor AccessorImpl.newInstance(未知 Source)java.lang.reflect.Constructor.newInstance(未知源) 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.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源)

注意,根本原因的完整堆栈跟踪在Apache中可用 Tomcat/7.0.33日志


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

我认为您缺少注释jar。

将下载的jar文件复制到以下位置之一

-> Tomcat lib directory or -> To the folder webapps/< your_project >/WEB-INF/lib ->Tomcat库目录 或 ->到文件夹webapps/< your_project>/WEB-INF/lib
然后重新启动服务器

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

看来您在部署的WEB应用程序中缺少了Hibernate库。请继续。不幸的是,这没有帮助,而且我的项目构建路径中有一个库,包含hibernate-annotation.jar文件。那不是理由。谢谢,那真的很重要。我将用户库的所有内容添加到WEB-INF/lib文件夹中,问题就解决了。非常感谢@MikhailZimka如果此答案解决了您的问题,请向上投票(单击此答案投票上方的向上三角形),然后单击复选标记“接受”。