ybabyjun 2014-10-19 07:48 采纳率: 0%
浏览 822

使用hibernate和servlet时报错

使用hibernate4.1.4时报出java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion的错误,这个包我已经已经引进去了,调用的servlet如下
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    CustomersDAO customer = new CustomersDAO();
    Customers list = customer.findById(1l);
    System.out.println(list.getName());
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("  <BODY>");
    out.print("    This is ");
    out.print(this.getClass());
    out.println(", using the GET method");
    out.println("  </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
}

在非web情形下能运行通过,求大神解释

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 22:12
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于Hibernate没有正确导入或者配置导致的。你需要确保你的项目中包含了Hibernate的jar文件,并且你的类路径中也包含了Hibernate的classpath。

    如果你是在Servlet环境下遇到的问题,那么你可能需要检查一下你的web.xml文件是否正确配置了Hibernate。通常情况下,你应该在<web-app>标签下面添加以下内容:

    <servlet>
        <servlet-name>myServlet</servlet-name>
        <servlet-class>com.example.MyServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>myServlet</servlet-name>
        <url-pattern>/myServlet/*</url-pattern>
    </servlet-mapping>
    

    然后,在你的Java类中注入Hibernate SessionFactory:

    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    Session session = sessionFactory.openSession();
    session.beginTransaction();
    
    Customer customer = (Customer) session.get(Customer.class, 1L);
    
    session.getTransaction().commit();
    session.close();
    

    如果问题仍然存在,你可以尝试将Hibernate的jar文件复制到项目的lib目录下,并重新编译你的应用程序。

    评论

报告相同问题?