java.lang.ClassNotFoundException:org.hibernate.HibernateException

我正在用hibernate运行一个web应用程序,并陷入了这个exception。 请帮忙吗?

java.lang.ClassNotFoundException:org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)at org.hibernate.HibernateException at com.forum.dao.TopicDAO.findAll(TopicDAO.java:43)at com.forum.servlets.Accueil.doGet(Accueil.java:23)at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain)的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)上的javax.servlet.http.HttpServlet.service(HttpServlet.java:728) .java:210)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)at org.apache.catalina。 authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostVal ve.java:171)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)at org.apache.catalina .core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008 )org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312)at java.util.concurrent。 ThreadPoolExecutor.runWorker(Unknown Source)java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)java.lang.Thread.run(Unknown Source)

这里是TopicDAO.findALL()

public static List<Topic> findAll() { Session s = HibernateUtils.getSession(); //TopicDAO.java:43 Transaction tx = s.beginTransaction(); List<Topic> objects = null; Query q = s.createQuery("from Topic"); objects = q.list(); tx.commit(); return objects; } 

而且,这里是我的servlet.doGet()

 public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { HttpSession session = request.getSession(); TopicDAO td = new TopicDAO(); List<Topic> listTopics = td.findAll(); session.setAttribute( ATT_LIST_TOPICS, listTopics ); this.getServletContext().getRequestDispatcher( ACCUEIL ).forward( request, response ); } 

这里是我添加的Hibernate库:

休眠结构

说明:

  • ClassDefNotFoundexception意味着您的程序无法从引用的库中find所需的.class文件。

  • 在你的情况下,hibernateX.jar文件不打包在你的war文件中。

  • 你需要做的是把它添加到war文件的WEB-INF/lib文件夹中。

解决scheme(使用IntelliJ):

  1. 打开项目结构

  2. 从左侧的选项中select工件

  3. 从OutputLayout选项卡中的war文件浏览到WEB-INF/lib

  4. 将包含hibernateX.jar的库添加到文件夹中

  5. 重新部署您的项目。

解决scheme(使用Eclipse):

  1. 只需将jar拖放到WEB-INF/lib

我看到一些图书馆不见了。 我有这些,它工作得很好。 顺便说一句。 你使用什么数据库? PostgreSQL的? 否则,您还需要为数据库包含JDBC驱动程序。 请注意,其中一些是通过JPAhibernate所需的。

在这里输入图像描述

有时候可能是由于本地maven仓库中的hibernate库冲突造成的。 我有这个问题,并尝试一切build议这里没有为我工作后,我不得不求助于在我的maven本地回购在hibernate文件夹中包含多个hibernate的一切。 之后,一切都开始为我工作

尝试在webContent/WEB-INF/lib添加jar文件。 这应该很有可能。 有时候,hibernate无法find所需的jar文件。 所以,你必须添加jar文件并为其提供正确的path。