NoClassDefFoundError: org / hibernate / hql / internal / ast / tree / OrderByClause - PullRequest
0 голосов
/ 29 мая 2020

У меня есть два отдельных проекта, которые развернуты на одном и том же сервере weblogi c (12 c): -EJB module (ear file) -Web application (ear file) Оба используют hibernate-jpa- 2.1-ap i и hibernate-core 5.4.5.Final , и они работают без каких-либо ошибок, но только когда мы развертываем веб-приложение после EJB-модуля, мы видим случайный error NoClassDefFoundError для некоторого запроса в модуле EJB, например:

Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/internal/BindingTypeHelper
Caused by: java.lang.NoClassDefFoundError: org/hibernate/hql/internal/ast/tree/OrderByClause

Произошла случайная ошибка stacktrace:

    Caused by: javax.ejb.EJBException: Unpredictable runtime error is caught. See the nested exception.
    at com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:105)
    at com.company.corp.app.helper.MDCLoggingInterceptor.doIntercept(MDCLoggingInterceptor.java:29)
    ... 161 more
Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/criteria/internal/expression/CompoundSelectionImpl
    at org.hibernate.query.criteria.internal.CriteriaBuilderImpl.tuple(CriteriaBuilderImpl.java:188)
    at org.hibernate.query.criteria.internal.CriteriaBuilderImpl.tuple(CriteriaBuilderImpl.java:176)
    at com.company.corp.app.commons.dao.UserDAO.getUserStatusHistory(UserDAO.java:1445)
    at com.company.corp.app.commons.services.functional.UserSearchServices.getUserStatusHistory(UserSearchServices.java:391)
    at com.company.corp.app.commons.services.functional.UserSearchServices$Proxy$_$$_WeldSubclass.getUserStatusHistory$$super(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:49)
    at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:77)
    at weblogic.transaction.cdi.TransactionalInterceptorBase.proceed(TransactionalInterceptorBase.java:75)
    at weblogic.transaction.cdi.TransactionalInterceptorNotSupported.transactional(TransactionalInterceptorNotSupported.java:57)
    at sun.reflect.GeneratedMethodAccessor1007.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:74)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
    at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
    at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
    at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
    at com.company.corp.app.commons.services.functional.UserSearchServices$Proxy$_$$_WeldSubclass.getUserStatusHistory(Unknown Source)
    at com.company.corp.app.UserViews.UserViewsBean.getUserStatusHistory(UserViewsBean.java:262)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:101)
    ... 162 more

постоянство. xml конфигурация:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
    version="2.1">
    <persistence-unit name="app" transaction-type="JTA">

        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>jdbc/APPejbJTSHibernate</jta-data-source>
        <non-jta-data-source>jdbc/APPejbNonJTSHibernate</non-jta-data-source>

        <class>com.company.corp.app.commons.model.AttachedFile</class>
        <class>com.company.corp.app.commons.model.User</class>
        <class>com.company.corp.app.commons.model.UserComment</class>

        <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="transaction.factory_class"
                value="org.hibernate.transaction.CMTTransactionFactory" />
            <property name="hibernate.transaction.manager_lookup_class"
                value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />
            <property name="hibernate.transaction.auto_close_session"
                value="true" />
            <property name="hibernate.transaction.flush_before_completion"
                value="true" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.format_sql" value="false" />
            <property name="hibernate.default_batch_fetch_size" value="10" />
            <property name="hibernate.max_fetch_depth" value="0" />
            <property name="hibernate.use_sql_comments" value="false" />
            <property name="hibernate.transaction.jta.platform"
                value="org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform" />
        </properties>
    </persistence-unit>
</persistence>

В обоих проектах мы используем следующую конфигурацию в weblogi c -application. xml:

wls: preference-application-packages

    <wls:package-name>org.hibernate.*</wls:package-name>

Все библиотеки hibernate ( jar) уже присутствуют в каждом ушном файле, и он отлично работает только при удалении модуля EJB до веб-приложения.

Как я могу устранить эту ошибку загрузки классов в веб-журналах c? Отсутствует ли конфигурация c на сервере weblogi c?

...