3

I put all the required jars in class-path but still m getting the following error:

Failed to define class org.hibernate.search.impl.FullTextSessionImpl in Module "com.cirq:main" from local module loader @7a08c0a3 (roots: /home/jboss/modules): java.lang.LinkageError: Failed to link org/hibernate/search/impl/FullTextSessionImpl (Module "com.cirq:main" from local module loader @7a08c0a3 (roots: /home/jboss/modules))
        at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:396)
        at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:243)
        at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:73)
        at org.jboss.modules.Module.loadModuleClass(Module.java:517)
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:182)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
        at org.hibernate.search.impl.ImplementationFactory.createFullTextSession(ImplementationFactory.java:34) [hibernate-search-orm-5.6.0.Final.jar:5.6.0.Final]
        at org.hibernate.search.Search.getFullTextSession(Search.java:44) [hibernate-search-orm-5.6.0.Final.jar:5.6.0.Final]
        at com.cirq.dao.implementation.UserInformationSearchDAO$2.doInHibernate(UserInformationSearchDAO.java:72) [classes:]
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367) [spring.jar:2.0.2]
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:333) [spring.jar:2.0.2]
        at com.cirq.dao.implementation.UserInformationSearchDAO.searchForUserInfo(UserInformationSearchDAO.java:58) [classes:]
        at com.cirq.controller.devicecontroller.UserInformationSearchLucene.handleRequest(UserInformationSearchLucene.java:63) [classes:]
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45) [spring.jar:2.0.2]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820) [spring.jar:2.0.2]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:755) [spring.jar:2.0.2]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396) [spring.jar:2.0.2]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350) [spring.jar:2.0.2]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:840) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:622) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:560) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:488) [jbossweb-7.0.13.Final.jar:]
        at com.cirq.controller.devicecontroller.DeviceEndPoint.handleRequest(DeviceEndPoint.java:73) [classes:]
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45) [spring.jar:2.0.2]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820) [spring.jar:2.0.2]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:755) [spring.jar:2.0.2]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396) [spring.jar:2.0.2]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350) [spring.jar:2.0.2]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:205) [cors-filter-1.3.2.jar:]
        at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:266) [cors-filter-1.3.2.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_111]
Caused by: java.lang.NoClassDefFoundError: org/hibernate/engine/spi/SessionImplementor
        at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_111]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:803) [rt.jar:1.7.0_111]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) [rt.jar:1.7.0_111]
        at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:327)
        at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:391)
        ... 54 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.spi.SessionImplementor from [Module "com.cirq:main" from local module loader @7a08c0a3 (roots: /home/jboss/modules)]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
        ... 59 more

This is my code snippet:

//Error is on line 1.

       FullTextSession fullTextSession1 = Search.getFullTextSession(session);

            QueryBuilder qb = fullTextSession1.getSearchFactory()
                    .buildQueryBuilder().forEntity(Book.class).get();

            org.apache.lucene.search.Query query = qb.keyword().onFields("mobileno","fname")
                    .matching(searchText).createQuery();

            org.hibernate.Query hibQuery = fullTextSession1.createFullTextQuery(query, UserInformation.class);

            List results = hibQuery.list();
            System.out.println("Result Ser Size " +results.size());
            return results;
  • Jars in class-path:

    1. antlr.jar
    2. classmate-1.3.0.jar
    3. commons-collections-3.2.1.jar
    4. dom4j-1.6.1.jar
    5. hibernate3.jar
    6. hibernate-annotations.jar
    7. hibernate-entitymanager.jar
    8. hibernate-search-engine-5.6.0.Final.jar
    9. hibernate-search-orm-5.6.0.Final.jar
    10. javassist-3.20.0-GA.jar
    11. jboss-logging-3.3.0.Final.jar
    12. lucene-core-5.5.2.jar
    13. xml-apis-1.3.03.jar

Spring version used: 2.0 and Hibernate Version used: 3.0

Spring Bean Congif file:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


    <!-- ========================== DATASOURCE CONFIGURATION =============================== -->
    <!-- OLD comment -->
    <!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/onlineadmissions"/>
        <property name="username" value="root"/>
        <property name="password" value="iamme1234"/>
        </bean> -->

    <bean id="dataSource"
        class="org.springframework.jndi.JndiObjectFactoryBean"
        destroy-method="close">
        <property name="jndiName" value="java:/cirq" />
    </bean>
    <!-- =========================== HIBERNATE IMPLEMENTATIONS ========================== -->

    <bean id="dbSessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="configLocation">
            <value>.\WEB-INF\hibernate.cfg.xml</value>
        </property>
        <property name="configurationClass">
            <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.bytecode.provider">javassist</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.cache.use_second_level_cache">false</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.connection.characterEncoding">utf8</prop>

                <prop key="hibernate.search.default.directory_provider">
                    org.hibernate.search.store.impl.FSDirectoryProvider</prop>
                <prop key="hibernate.search.default.indexBase">
                    D:\IntelliJWorkspace\cirqfinedine\index</prop>
            </props>
        </property>

    </bean>


    <bean id="hibernateTemplate"
        class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref bean="dbSessionFactory" />
        </property>
    </bean>

    <bean id="cachedHibernateTemplate"
        class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref bean="dbSessionFactory" />
        </property>
        <property name="cacheQueries">
            <value>true</value>
        </property>
    </bean>


    <!-- =========================== DAO IMPLEMENTATIONS ========================== -->


    <bean id="userInformationSearchDAO"
          class="com.cirq.dao.implementation.UserInformationSearchDAO">
        <property name="hibernateTemplate">
            <ref bean="hibernateTemplate" />
        </property>
    </bean>

Hibernate Configuration File:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <mapping class="com.cirq.model.CashDetails" />
        <mapping class="com.cirq.model.Category" />
        <mapping class="com.cirq.model.Customers" />
        <mapping class="com.cirq.model.MenuItems" />
        <mapping class="com.cirq.model.OrderDetails" />
        <mapping class="com.cirq.model.Orders" />
</session-factory>

</hibernate-configuration>

Persistance.xml file:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
   version="1.0">

<!--  This mapping file provided for the hibernateTool facility  -->
   <persistence-unit name="kuyke">

       <!-- The provider only needs to be set if you use several JPA providers
       <provider>org.hibernate.ejb.HibernatePersistence</provider>
        -->
       <!-- This is required to be spec compliant, Hibernate however supports
            auto-detection even in JSE.-->
       <class>com.cirq.model.CashDetails</class>
       <class>com.cirq.model.Category</class>
       <class>com.cirq.model.Customers</class>
       <class>com.cirq.model.MenuItems</class>
       <class>com.cirq.model.OrderDetails</class>
       <class>com.cirq.model.Orders</class>

      <properties>
          <!-- Scan for annotated classes and Hibernate mapping XML files -->
          <property name="hibernate.archive.autodetection" value="class, hbm"/>

        <!-- Uncomment For DEV-->
          <property name="hibernate.connection.driver_class"
                    value="com.mysql.jdbc.Driver"/>

          <property name="hibernate.connection.url"
                    value="jdbc:mysql://localhost:3306/cirq?autoReconnect=true"/>

           <property name="hibernate.connection.username"
                    value="smartideas"/>
          <property name="hibernate.connection.password"
                    value="smart543ideas"/>

          <property name="hibernate.c3p0.min_size"
                    value="5"/>
          <property name="hibernate.c3p0.max_size"
                    value="20"/>
          <property name="hibernate.c3p0.timeout"
                    value="300"/>
          <property name="hibernate.c3p0.max_statements"
                    value="50"/>
          <property name="hibernate.c3p0.idle_test_period"
                    value="3000"/>

          <property name="hibernate.dialect"
                    value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
          <property name="hibernate.cache.use_query_cache" value="true"/>


      <!--     Enable Hibernate's automatic session context management
          <property name="current_session_context_class" value="thread"/>

           Disable the second-level cache
          <property name="cache.provider_class" value="org.hibernate.cache.internal.NoCacheProvider"/>-->

          <!-- Store index in memory, so no index cleanup required after tests -->
          <property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.impl.RAMDirectoryProvider"/>


          <!-- Would set this in production application. Index stored on disk. -->
          <!-- <property name="hibernate.search.default.directory_provider">
              org.hibernate.search.store.impl.FSDirectoryProvider
          </property>
          <property name="hibernate.search.default.indexBase">c:/temp/lucene/indexes</property>
          -->

          <!-- Define Hibernate entity mappings. Standard Hibernate stuff - not specific
              to Hibernate Search. -->


      </properties>
   </persistence-unit>

</persistence>

Thanks in Advance !

utsav anand
  • 385
  • 1
  • 4
  • 16

1 Answers1

1

The error message is telling you that you are using versions of components which are not compatible with each others.

Your version of Hibernate ORM is way outdated. Same for your version of Spring. You won't be able to use Hibernate Search 5.6.0.Final with them. If you want them to work together, you should choose versions compatible with each others. And I would recommend you to use the latest stable version of Spring and the latest version of Hibernate ORM compatible with Hibernate Search 5.6.0.Final.

With Hibernate Search 5.6.0.Final, you should use the latest Hibernate ORM 5.1.x (5.1.4.Final at the moment I write this).

Guillaume Smet
  • 9,921
  • 22
  • 29
  • Thanks for the reply. Can you please suggest me which version of hibernate search is compatible with spring 2. Since at the moment i cannot change spring version as well as hibernate version. – utsav anand Feb 01 '17 at 12:10
  • It's a very bad idea and I'm pretty sure you will have lots of bugs but you can start your archeology by looking at http://search.maven.org/#search%7Cgav%7C6%7Cg%3A%22org.hibernate%22%20AND%20a%3A%22hibernate-search-parent%22 . Go to the last page and click on the pom link and check the Hibernate version referenced in the pom. Only look at Final or GA versions. Version 3 of Hibernate is too vague so find the full version number and search for the most recent Hibernate Search version relying on X.Y version of ORM. – Guillaume Smet Feb 01 '17 at 16:08
  • Thanks for the reply..! – utsav anand Feb 03 '17 at 07:13