java.lang.ClassNotFoundException : play. db.jpa.JPABase 使用 hibernate

标签 java hibernate jsf jpa playframework

我在 tomcat 7 的 catalina.out 日志中不断收到以下错误消息,我只是找不到源:

java.lang.ClassNotFoundException: play.db.jpa.JPABase
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:150)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
at my.task.task.model.RequestLogManager.add(RequestLogManager.java:44)
at my.task.task.control.RequestLogFilter.logRequest(RequestLogFilter.java:48)
at my.task.task.control.RequestLogFilter.doFilter(RequestLogFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at my.task.task.control.LoginFilter.doFilter(LoginFilter.java:26)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:269)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1773)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

我在 Mysql 服务器上使用 hibernate 3JSF 2。 我从未使用过 Play Framework

异常不会导致持久性问题,所有事务都在数据库中提交。所以它实际上比问题更烦人,但我无法忍受在不知道来源和清理日志的情况下收到错误消息。

导致错误的代码是:

public int add(RequestLogBean request) {
    if (request.getUserName() == null || request.getUserName().isEmpty()) {
        throw new IllegalArgumentException("Missing request user name");
    }

    int result = -1;
    Session session = this.getFactory().openSession();
    try {
        session.beginTransaction();
        result = (Integer) session.save(request);
        session.getTransaction().commit();
    } catch(HibernateException e) {         
        if(session.getTransaction() != null) {
            session.getTransaction().rollback();
        }
        e.printStackTrace();
        return -1;
    } finally {
        session.close();
    }

    return result;
}

commit()

我调查过: This post

但我的情况不同,我使用的不是 jBoss,而是 tomcat。 我添加到我的 pom.xml

    <dependency>
  <groupId>com.google.code.maven-play-plugin.org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>3.6.10.Final-patched-play-1.2.5</version>
  <scope>compile</scope>
</dependency>

而且我确定我的 Maven 依赖项已添加到我的类路径中。

什么是 play.db.jpa.JPABase 类?

我读到它是任何 jpa impl on play 框架的基类,但我什至没有在我的计算机上安装它......

我们将不胜感激。

最佳答案

如果您不使用 Play,则没有理由使用 groupId com.google.code.maven-play-plugin.org.hibernate 的人工制品。这可能是 hibernate-core 的一个版本,已被 fork 和修改以与 Play 框架一起使用。

使用真正的 hibernate 核心:org.hibernate:hibernate-core .

关于java.lang.ClassNotFoundException : play. db.jpa.JPABase 使用 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18293219/

相关文章:

java - 在java swing中添加多张图片的if语句

java - 如何使用 Jersey Web 服务发布多个文件(图像)。?

java - android 滚动时添加 View

java - 架构管理异常 : Schema-validation: missing table [chk_groups] even when table is present in DB

jsf - 将多个组件绑定(bind)到支持 bean 中的一个实例(Primefaces 树)

java - Apache HttpComponents 的替代品?

java - hibernate 选择导致更新

java - 使用 JPA Criteria API 添加连接表的 where 子句

jpa - Primefaces Lazy Datatable 排序/过滤表关系 - Eclipselink

JSF 中的 Java Web 服务 URL