【问题标题】:ClassCastException: Lucene40PostingsFormat on Hibernate SearchClassCastException:休眠搜索上的 Lucene40PostingsFormat
【发布时间】:2016-08-31 22:13:02
【问题描述】:

我正在尝试使用 Hibernate-Search 添加全文搜索功能,但是当我尝试在 glashfish 应用程序服务器上部署 ear proyect 时,我得到了 Lucene40PostingsFormat classCastException。

这是完整的服务器日志:

Información:   HHH000412: Hibernate Core {[WORKING]}
Información:   HHH000206: hibernate.properties not found
Información:   HHH000021: Bytecode provider name : javassist
Información:   HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Información:   HHH000400: Using dialect: org.hibernate.dialect.DerbyDialect
WARN:   HHH000430: The DerbyDialect dialect has been deprecated; use one of the version-specific dialects instead
Información:   HSEARCH000034: Hibernate Search 5.5.4.Final
Información:   HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@50ae9aef'
Grave:   java.lang.ExceptionInInitializerError
    at org.apache.lucene.codecs.PostingsFormat.forName(PostingsFormat.java:112)
    at org.apache.lucene.codecs.lucene40.Lucene40Codec.<init>(Lucene40Codec.java:115)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:67)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:45)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:37)
    at org.apache.lucene.codecs.Codec$Holder.<clinit>(Codec.java:47)
    at org.apache.lucene.codecs.Codec.getDefault(Codec.java:140)
    at org.apache.lucene.index.LiveIndexWriterConfig.<init>(LiveIndexWriterConfig.java:120)
    at org.apache.lucene.index.IndexWriterConfig.<init>(IndexWriterConfig.java:140)
    at org.hibernate.search.store.spi.DirectoryHelper.initializeIndexIfNeeded(DirectoryHelper.java:54)
    at org.hibernate.search.store.impl.DirectoryProviderHelper.createFSIndex(DirectoryProviderHelper.java:128)
    at org.hibernate.search.store.impl.FSDirectoryProvider.initialize(FSDirectoryProvider.java:53)
    at org.hibernate.search.store.spi.BaseDirectoryProviderService.initialize(BaseDirectoryProviderService.java:64)
    at org.hibernate.search.store.spi.BaseDirectoryProviderService.create(BaseDirectoryProviderService.java:52)
    at org.hibernate.search.indexes.spi.DirectoryBasedIndexManager.createDirectoryProvider(DirectoryBasedIndexManager.java:230)
    at org.hibernate.search.indexes.spi.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:90)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:256)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:513)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManagers(IndexManagerHolder.java:482)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:91)
    at org.hibernate.search.spi.SearchIntegratorBuilder.initDocumentBuilders(SearchIntegratorBuilder.java:358)
    at org.hibernate.search.spi.SearchIntegratorBuilder.buildNewSearchFactory(SearchIntegratorBuilder.java:199)
    at org.hibernate.search.spi.SearchIntegratorBuilder.buildSearchIntegrator(SearchIntegratorBuilder.java:117)
    at org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:75)
    at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:364)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:490)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:878)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:151)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:199)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:107)
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:223)
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510)
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:230)
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:925)
    at org.glassfish.javaee.full.deployment.EarDeployer.prepareBundle(EarDeployer.java:309)
    at org.glassfish.javaee.full.deployment.EarDeployer.access$200(EarDeployer.java:88)
    at org.glassfish.javaee.full.deployment.EarDeployer$1.doBundle(EarDeployer.java:155)
    at org.glassfish.javaee.full.deployment.EarDeployer$1.doBundle(EarDeployer.java:152)
    at org.glassfish.javaee.full.deployment.EarDeployer.doOnBundles(EarDeployer.java:232)
    at org.glassfish.javaee.full.deployment.EarDeployer.doOnAllTypedBundles(EarDeployer.java:241)
    at org.glassfish.javaee.full.deployment.EarDeployer.doOnAllBundles(EarDeployer.java:267)
    at org.glassfish.javaee.full.deployment.EarDeployer.prepare(EarDeployer.java:152)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:925)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:434)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(Abstra
Grave:   ctThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: class org.apache.lucene.codecs.lucene40.Lucene40PostingsFormat
    at java.lang.Class.asSubclass(Class.java:3404)
    at org.apache.lucene.util.SPIClassIterator.next(SPIClassIterator.java:141)
    at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:65)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:47)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:37)
    at org.apache.lucene.codecs.PostingsFormat$Holder.<clinit>(PostingsFormat.java:49)
    ... 89 more
Grave:   Exception while preparing the app
Grave:   Exception during lifecycle processing
java.lang.ExceptionInInitializerError
    at org.apache.lucene.codecs.PostingsFormat.forName(PostingsFormat.java:112)
    at org.apache.lucene.codecs.lucene40.Lucene40Codec.<init>(Lucene40Codec.java:115)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:67)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:45)
    at org.apache.lucene.util.NamedSPILoader.<init>(NamedSPILoader.java:37)
    at org.apache.lucene.codecs.Codec$Holder.<clinit>(Codec.java:47)
    at org.apache.lucene.codecs.Codec.getDefault(Codec.java:140)
    at org.apache.lucene.index.LiveIndexWriterConfig.<init>(LiveIndexWriterConfig.java:120)
    at org.apache.lucene.index.IndexWriterConfig.<init>(IndexWriterConfig.java:140)
    at org.hibernate.search.store.spi.DirectoryHelper.initializeIndexIfNeeded(DirectoryHelper.java:54)
    at org.hibernate.search.store.impl.DirectoryProviderHelper.createFSIndex(DirectoryProviderHelper.java:128)
    at org.hibernate.search.store.impl.FSDirectoryProvider.initialize(FSDirectoryProvider.java:53)
    at org.hibernate.search.store.spi.BaseDirectoryProviderService.initialize(BaseDirectoryProviderService.java:64)
    at org.hibernate.search.store.spi.BaseDirectoryProviderService.create(BaseDirectoryProviderService.java:52)
    at org.hibernate.search.indexes.spi.DirectoryBasedIndexManager.createDirectoryProvider(DirectoryBasedIndexManager.java:230)
    at org.hibernate.search.indexes.spi.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:90)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:256)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:513)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManagers(IndexManagerHolder.java:482)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:91)
    at org.hibernate.search.spi.SearchIntegratorBuilder.initDocumentBuilders(SearchIntegratorBuilder.java:358)
    at org.hibernate.search.spi.SearchIntegratorBuilder.buildNewSearchFactory(SearchIntegratorBuilder.java:199)
    at org.hibernate.search.spi.SearchIntegratorBuilder.buildSearchIntegrator(SearchIntegratorBuilder.java:117)
    at org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:75)
    at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:364)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:490)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:878)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:151)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:199)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:107)
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:223)
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510)
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:230)
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:925)
    at org.glassfish.javaee.full.deployment.EarDeployer.prepare

ejb 模块对 pom 文件的依赖如下:

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.2.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-search-orm</artifactId>
        <version>5.5.4.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.0.9.Final</version>
    </dependency>
</dependencies>

如果我在 hibernate-search 工件上排除工件 lucene-backward-codecs,我会收到错误:

java.lang.ClassCastException: class org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-search-orm</artifactId>
   <version>${hibernate.search.version}</version>
   <exclusions>
     <exclusion>  <!-- declare the exclusion here -->
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-backward-codecs</artifactId>
     </exclusion>
   </exclusions> 
</dependency>

持久化单元配置如下:

 <?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
  <persistence-unit name="ejercicio4_PU" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>jdbc/books</jta-data-source>
    <class>models.Book</class>
    <class>models.Author</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.search.lucene_version" value="LUCENE_CURRENT"/>
      <property name="hibernate.search.default.directory_provider" value="filesystem"/>
      <property name="hibernate.search.default.indexBase" value="./lucene/indexes"/>
      <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
    </properties>
  </persistence-unit>
</persistence>

我使用了 plugin-finder duplicate-maven-plugin 寻找找到可能的不同版本的lucene

<plugin>
  <groupId>com.ning.maven.plugins</groupId>
  <artifactId>maven-duplicate-finder-plugin</artifactId>
  <version>1.0.8</version>
  <executions>
     <execution>
          <phase>verify</phase>
          <goals>
             <goal>check</goal>
          </goals>
     </execution>
  </executions>
</plugin>

这是构建项目所获得结果的摘录:

Checking compile classpath

    Found duplicate and different classes in [javax:javaee-api:7.0,org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final] :
      javax.persistence.Access
      javax.persistence.AccessType
      javax.persistence.AssociationOverride
      javax.persistence.AssociationOverrides
      javax.persistence.AttributeConverter
      javax.persistence.AttributeNode
      javax.persistence.AttributeOverride
      javax.persistence.AttributeOverrides
      javax.persistence.Basic
      javax.persistence.Cache
      javax.persistence.CacheRetrieveMode
      javax.persistence.CacheStoreMode
      javax.persistence.Cacheable
      javax.persistence.CascadeType
      javax.persistence.CollectionTable
      javax.persistence.Column
      javax.persistence.ColumnResult
      javax.persistence.ConstraintMode
      javax.persistence.ConstructorResult
      javax.persistence.Convert
      javax.persistence.Converter
      javax.persistence.Converts
      javax.persistence.DiscriminatorColumn
      javax.persistence.DiscriminatorType
      javax.persistence.DiscriminatorValue
      javax.persistence.ElementCollection
      javax.persistence.Embeddable
      javax.persistence.Embedded
      javax.persistence.EmbeddedId
      javax.persistence.Entity
      javax.persistence.EntityExistsException
      javax.persistence.EntityGraph
      javax.persistence.EntityListeners
      javax.persistence.EntityManager
      javax.persistence.EntityManagerFactory
      javax.persistence.EntityNotFoundException
      javax.persistence.EntityResult
      javax.persistence.EntityTransaction
      javax.persistence.EnumType
      javax.persistence.Enumerated
      javax.persistence.ExcludeDefaultListeners
      javax.persistence.ExcludeSuperclassListeners
      javax.persistence.FetchType
      javax.persistence.FieldResult
      javax.persistence.FlushModeType
      javax.persistence.ForeignKey
      javax.persistence.GeneratedValue
      javax.persistence.GenerationType
      javax.persistence.Id
      javax.persistence.IdClass
      javax.persistence.Index
      javax.persistence.Inheritance
      javax.persistence.InheritanceType
      javax.persistence.JoinColumn
      javax.persistence.JoinColumns
      javax.persistence.JoinTable
      javax.persistence.Lob
      javax.persistence.LockModeType
      javax.persistence.LockTimeoutException
      javax.persistence.ManyToMany
      javax.persistence.ManyToOne
      javax.persistence.MapKey
      javax.persistence.MapKeyClass
      javax.persistence.MapKeyColumn
      javax.persistence.MapKeyEnumerated
      javax.persistence.MapKeyJoinColumn
      javax.persistence.MapKeyJoinColumns
      javax.persistence.MapKeyTemporal
      javax.persistence.MappedSuperclass
      javax.persistence.MapsId
      javax.persistence.NamedAttributeNode
      javax.persistence.NamedEntityGraph
      javax.persistence.NamedEntityGraphs
      javax.persistence.NamedNativeQueries
      javax.persistence.NamedNativeQuery
      javax.persistence.NamedQueries
      javax.persistence.NamedQuery
      javax.persistence.NamedStoredProcedureQueries
      javax.persistence.NamedStoredProcedureQuery
      javax.persistence.NamedSubgraph
      javax.persistence.NoResultException
      javax.persistence.NonUniqueResultException
      javax.persistence.OneToMany
      javax.persistence.OneToOne
      javax.persistence.OptimisticLockException
      javax.persistence.OrderBy
      javax.persistence.OrderColumn
      javax.persistence.Parameter
      javax.persistence.ParameterMode
      javax.persistence.Persistence
      javax.persistence.PersistenceContext
      javax.persistence.PersistenceContextType
      javax.persistence.PersistenceContexts
      javax.persistence.PersistenceException
      javax.persistence.PersistenceProperty
      javax.persistence.PersistenceUnit
      javax.persistence.PersistenceUnitUtil
      javax.persistence.PersistenceUnits
      javax.persistence.PersistenceUtil
      javax.persistence.PessimisticLockException
      javax.persistence.PessimisticLockScope
      javax.persistence.PostLoad
      javax.persistence.PostPersist
      javax.persistence.PostRemove
      javax.persistence.PostUpdate
      javax.persistence.PrePersist
      javax.persistence.PreRemove
      javax.persistence.PreUpdate
      javax.persistence.PrimaryKeyJoinColumn
      javax.persistence.PrimaryKeyJoinColumns
      javax.persistence.Query
      javax.persistence.QueryHint
      javax.persistence.QueryTimeoutException
      javax.persistence.RollbackException
      javax.persistence.SecondaryTable
      javax.persistence.SecondaryTables
      javax.persistence.SequenceGenerator
      javax.persistence.SharedCacheMode
      javax.persistence.SqlResultSetMapping
      javax.persistence.SqlResultSetMappings
      javax.persistence.StoredProcedureParameter
      javax.persistence.StoredProcedureQuery
      javax.persistence.Subgraph
      javax.persistence.SynchronizationType
      javax.persistence.Table
      javax.persistence.TableGenerator
      javax.persistence.Temporal
      javax.persistence.TemporalType
      javax.persistence.TransactionRequiredException
      javax.persistence.Transient
      javax.persistence.Tuple
      javax.persistence.TupleElement
      javax.persistence.TypedQuery
      javax.persistence.UniqueConstraint
      javax.persistence.ValidationMode
      javax.persistence.Version
      javax.persistence.criteria.AbstractQuery
      javax.persistence.criteria.CollectionJoin
      javax.persistence.criteria.CommonAbstractCriteria
      javax.persistence.criteria.CompoundSelection
      javax.persistence.criteria.CriteriaBuilder
      javax.persistence.criteria.CriteriaDelete
      javax.persistence.criteria.CriteriaQuery
      javax.persistence.criteria.CriteriaUpdate
      javax.persistence.criteria.Expression
      javax.persistence.criteria.Fetch
      javax.persistence.criteria.FetchParent
      javax.persistence.criteria.From
      javax.persistence.criteria.Join
      javax.persistence.criteria.JoinType
      javax.persistence.criteria.ListJoin
      javax.persistence.criteria.MapJoin
      javax.persistence.criteria.Order
      javax.persistence.criteria.ParameterExpression
      javax.persistence.criteria.Path
      javax.persistence.criteria.PluralJoin
      javax.persistence.criteria.Predicate
      javax.persistence.criteria.Root
      javax.persistence.criteria.Selection
      javax.persistence.criteria.SetJoin
      javax.persistence.criteria.Subquery
      javax.persistence.metamodel.Attribute
      javax.persistence.metamodel.BasicType
      javax.persistence.metamodel.Bindable
      javax.persistence.metamodel.CollectionAttribute
      javax.persistence.metamodel.EmbeddableType
      javax.persistence.metamodel.EntityType
      javax.persistence.metamodel.IdentifiableType
      javax.persistence.metamodel.ListAttribute
      javax.persistence.metamodel.ManagedType
      javax.persistence.metamodel.MapAttribute
      javax.persistence.metamodel.MappedSuperclassType
      javax.persistence.metamodel.Metamodel
      javax.persistence.metamodel.PluralAttribute
      javax.persistence.metamodel.SetAttribute
      javax.persistence.metamodel.SingularAttribute
      javax.persistence.metamodel.StaticMetamodel
      javax.persistence.metamodel.Type
      javax.persistence.spi.ClassTransformer
      javax.persistence.spi.LoadState
      javax.persistence.spi.PersistenceProvider
      javax.persistence.spi.PersistenceProviderResolver
      javax.persistence.spi.PersistenceProviderResolverHolder
      javax.persistence.spi.PersistenceUnitInfo
      javax.persistence.spi.PersistenceUnitTransactionType
      javax.persistence.spi.ProviderUtil

我正在使用 Glassfish 服务器 4.1 和 Netbeans 8.0.2。

希望有人能帮助我,谢谢。

【问题讨论】:

    标签: lucene classcastexception hibernate-search java-ee-7 glassfish-4


    【解决方案1】:

    您遇到的错误是尝试打开由 Apache Lucene 版本 4.0.x 编写的 Lucene 索引的结果。

    如果您正在使用使用 Lucene 4 的旧版 Hibernate Search 迁移应用程序,那么我建议您删除索引并使用 MassIndexer 重建它。

    如果您出于任何原因需要读取旧的索引格式,您可以将以下依赖项添加到您的应用程序中以便能够读取它:

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-backward-codecs</artifactId>
        <version>5.3.1</version>
    </dependency>
    

    另外 - 不相关但会给你带来麻烦 - 我看到你已经将 hibernate-corehibernate-entitymanager 设置为两个不同的版本:永远不要这样做! 由于 Hibernate Search 尚不兼容 Hibernate ORM 5.2.x,我建议将两个版本都设置为 5.1.1.Final,这与 Hibernate Search 5.5.4.Final 兼容。

    【讨论】:

    • 我删除了索引,当我进行部署时出现以下信息:未找到索引目录,正在创建:'.\lucene\indexes' 未找到索引目录,正在创建:'.\lucene\indexes\模型.书'。但异常仍在发生。
    • 我也听从了你在 pom 配置中的建议。 hibernate-core 和 hibernate-entitymanager 是同一个版本
    • 检查你在类路径上还有什么。其中包括旧版本的 Apache Lucene,它与您要与 Hibernate Search 一起使用的版本存在冲突/重复。
    • 你能告诉我如何检查类路径吗?
    • 你能告诉我另一个版本的 hinernate -search 可以用来避免这个错误吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2011-11-17
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多