我遇到了以下问题:我尝试使用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 回答
@Perception有正确的答案 . 您需要将Hibernate库包含在已部署的war文件中 . 您可以将它们放在WEB-INF / lib或在Tomcat认可的目录中 . 我更喜欢WEB-INF / lib位置,因此您不会干扰服务器上的任何其他应用程序 .
我想你错过了注释jar . Download the Annotations
将下载的jar文件复制到其中一个位置....
然后重启服务器