#tomcat #solr
#tomcat #solr
Вопрос:
Я установил Solr 4.9.0 с Tomcat 7 на Linux Mint 14. Solr не загружает ядро по умолчанию collection1
. Кажется, что Solr запущен, и я могу открыть core manager. Если я создам другие ядра на основе этого, я снова получу ту же ошибку. Я изменил solr home по умолчанию с /opt/solr/ на другое место, чтобы иметь возможность иметь XML-файлы под контролем версий. Это ошибка, которую я вижу в журналах:
Error loading core:java.util.concurrent.ExecutionException: java.lang.LinkageError: loader constraint violation: when resolving method "java.lang.invoke.MethodHandle.invokeExact()Lorg/apache/lucene/util/AttributeImpl;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, org/apache/lucene/util/AttributeFactory$1, and the class loader (instance of <bootloader>) for resolved class, java/lang/invoke/MethodHandle, have different Class objects for the type ; used in the signature
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:301)
at org.apache.solr.servlet.SolrDispatchFilter.createCoreContainer(SolrDispatchFilter.java:189)
at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:136)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3920)
at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:953)
at org.apache.catalina.manager.HTMLManagerServlet.reload(HTMLManagerServlet.java:655)
at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:213)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:193)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
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:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
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:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1003)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "java.lang.invoke.MethodHandle.invokeExact()Lorg/apache/lucene/util/AttributeImpl;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, org/apache/lucene/util/AttributeFactory$1, and the class loader (instance of <bootloader>) for resolved class, java/lang/invoke/MethodHandle, have different Class objects for the type ; used in the signature
at org.apache.lucene.util.AttributeFactory$1.createInstance(AttributeFactory.java:182)
at org.apache.lucene.util.AttributeFactory$StaticImplementationAttributeFactory.createAttributeInstance(AttributeFactory.java:145)
at org.apache.lucene.util.AttributeSource.addAttribute(AttributeSource.java:229)
at org.apache.lucene.analysis.util.CharTokenizer.<init>(CharTokenizer.java:104)
at org.apache.lucene.analysis.core.WhitespaceTokenizer.<init>(WhitespaceTokenizer.java:51)
at org.apache.lucene.analysis.synonym.FSTSynonymFilterFactory$1.createComponents(FSTSynonymFilterFactory.java:98)
at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:180)
at org.apache.lucene.analysis.synonym.SynonymMap$Parser.analyze(SynonymMap.java:311)
at org.apache.lucene.analysis.synonym.SolrSynonymParser.addInternal(SolrSynonymParser.java:98)
at org.apache.lucene.analysis.synonym.SolrSynonymParser.parse(SolrSynonymParser.java:69)
at org.apache.lucene.analysis.synonym.FSTSynonymFilterFactory.loadSynonyms(FSTSynonymFilterFactory.java:142)
at org.apache.lucene.analysis.synonym.FSTSynonymFilterFactory.inform(FSTSynonymFilterFactory.java:112)
at org.apache.lucene.analysis.synonym.SynonymFilterFactory.inform(SynonymFilterFactory.java:90)
at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:675)
at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:166)
at org.apache.solr.schema.IndexSchemaFactory.create(IndexSchemaFactory.java:55)
at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:69)
at org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:89)
at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:62)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:554)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:261)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:253)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
... 3 more
Комментарии:
1. У меня тоже такая же проблема. Кажется, все в порядке, если я перезапущу Tomcat, но снова выдает ошибку, если я перезагружаю Solr со страницы менеджера. У меня также есть это на другой машине, на которой работает Tomcat 8 в Windows, и там все в порядке.
Ответ №1:
Обновление вашей версии Java до последней версии должно исправить это. В документах о выпуске для Solr 4.8.0 указано:
Для Apache Solr теперь требуется Java 7 или выше (рекомендуется Oracle Java 7 или OpenJDK 7, минимальное обновление 55; в более ранних версиях были известные ошибки JVM, влияющие на Solr).
Комментарии:
1. Хм. Я столкнулся с этим
Lorg/apache/lucene/util/AttributeImpl
под управлением apache-tomcat-7.0.56, Oracle JDK 1.8.0_25, lucene 4.10.2, solr 4.10.2 и elasticsearch 1.4.02. @PeterDietz Какую полную трассировку стека вы получаете?
3. Трассировку стека можно найти по адресу: jira.duraspace.org/browse/DS-2293 И источником для приложения, использующего ES, является: github.com/DSpace/DSpace/blob/master/dspace-api/src/main/java /…