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):
-
打开项目结构
-
从左侧的选项中select工件
-
从OutputLayout选项卡中的war文件浏览到
WEB-INF/lib
-
将包含hibernateX.jar的库添加到文件夹中
-
重新部署您的项目。
解决scheme(使用Eclipse):
- 只需将jar拖放到
WEB-INF/lib
我看到一些图书馆不见了。 我有这些,它工作得很好。 顺便说一句。 你使用什么数据库? PostgreSQL的? 否则,您还需要为数据库包含JDBC驱动程序。 请注意,其中一些是通过JPAhibernate所需的。
有时候可能是由于本地maven仓库中的hibernate库冲突造成的。 我有这个问题,并尝试一切build议这里没有为我工作后,我不得不求助于在我的maven本地回购在hibernate文件夹中包含多个hibernate的一切。 之后,一切都开始为我工作
尝试在webContent/WEB-INF/lib
添加jar文件。 这应该很有可能。 有时候,hibernate无法find所需的jar文件。 所以,你必须添加jar文件并为其提供正确的path。
- javax.transaction.Transactional vs org.springframework.transaction.annotation.Transactional
- Spring Boot + JPA:忽略列名称注释
- JPA:实现模型层次结构 – @MappedSuperclass与@Inheritence
- Hibernate ORM 5有哪些新特性?
- 我发现JPA,或类似的,不鼓励DAO模式
- JPA渴望获取不join
- JPA映射:“QuerySyntaxException:foobar未映射…”
- 用Hibernate映射PostgreSQL数组
- ORDER BY使用Criteria API