我在部署新实施挪威分析器的项目时遇到异常
@Fields({ @Field(index = Index.YES, store = Store.YES, analyzer = @Analyzer(impl=NorwegianAnalyzer.class))
错误的详细堆栈跟踪是:
Caused by: org.hibernate.search.SearchException: Failed to instantiate lucene analyzer with type org.apache.lucene.analysis.no.NorwegianAnalyzer
at org.hibernate.search.engine.impl.AnnotationProcessingHelper.getAnalyzer(AnnotationProcessingHelper.java:170)
at org.hibernate.search.engine.impl.FieldMetadata.<init>(FieldMetadata.java:94)
at org.hibernate.search.engine.spi.AbstractDocumentBuilder.bindFieldAnnotation(AbstractDocumentBuilder.java:1085)
at org.hibernate.search.engine.spi.AbstractDocumentBuilder.checkForFields(AbstractDocumentBuilder.java:552)
at org.hibernate.search.engine.spi.AbstractDocumentBuilder.initializeMemberLevelAnnotations(AbstractDocumentBuilder.java:485)
at org.hibernate.search.engine.spi.AbstractDocumentBuilder.initializeClass(AbstractDocumentBuilder.java:392)
at org.hibernate.search.engine.spi.AbstractDocumentBuilder.<init>(AbstractDocumentBuilder.java:174)
at org.hibernate.search.engine.spi.DocumentBuilderContainedEntity.<init>(DocumentBuilderContainedEntity.java:60)
at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:396)
at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:222)
at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:146)
at org.hibernate.search.event.impl.FullTextIndexEventListener.initialize(FullTextIndexEventListener.java:130)
at org.hibernate.search.hcore.impl.HibernateSearchIntegrator.integrate(HibernateSearchIntegrator.java:83)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1797)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:268)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 42 more
Caused by: org.hibernate.search.SearchException: Unable to instantiate analyzer class: org.apache.lucene.analysis.no.NorwegianAnalyzer. Verify it has a no-args public constructor and is not abstract. Also Analyzer implementation classes or their tokenStream() and reusableTokenStream() implementations must be final.
at org.hibernate.search.util.impl.ClassLoaderHelper.analyzerInstanceFromClass(ClassLoaderHelper.java:234)
at org.hibernate.search.engine.impl.AnnotationProcessingHelper.getAnalyzer(AnnotationProcessingHelper.java:161)
... 64 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.hibernate.search.util.impl.ClassLoaderHelper.analyzerInstanceFromClass(ClassLoaderHelper.java:215)
... 65 more
Caused by: java.lang.NoSuchMethodError: org.apache.lucene.analysis.WordlistLoader.getSnowballWordSet(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/Set;
at org.apache.lucene.analysis.no.NorwegianAnalyzer$DefaultSetHolder.<clinit>(NorwegianAnalyzer.java:65)
at org.apache.lucene.analysis.no.NorwegianAnalyzer.<init>(NorwegianAnalyzer.java:79)
知道如何解决这个问题吗?
答案 0 :(得分:0)
堆栈跟踪中提到的org.apache.lucene.analysis.no.NorwegianAnalyzer
似乎与org.apache.lucene.analysis.WordlistLoader
的预期版本不匹配。
由于在最近的Apache Lucene版本中,两个类都包含在同一个jar中,因此您的类路径中可能会有一些重复版本的Lucene jar。
确保仅使用与Hibernate Search预期版本匹配的Apache Lucene版本的jar。