Отладка исходного кода solr 4.6. Получение ClassNotFoundException: java.lang.ClassNotFoundException: solr.WhitespaceTokenizerFactory

1

Я пытаюсь отлаживать исходный код solr4.6 с eclipse и tomcat. Я получаю сообщение об ошибке: HTTP Status 500 - {msg = SolrCore 'collection1' недоступен из-за сбоя init: Ошибка инициализации плагина для [schema.xml] fieldType "text_ws": сбой инициализации плагина для [schema.xml] анализатора/токенизатор

Я попытался отладить его и обнаружил, что SolrResourceLoader создает имя класса как name = base + '.' + subpackage + newName; В случае solr.WhitespaceTokenizerFactory базой является org.apache.solr, а подпакетное имя - '', а newName - WhitespaceTokenizerFactory.

Таким образом, значение для имени fn Class.forName(name, true, classLoader) является org.apache.solr.WhitespaceTokenizerFactory

Однако пакет WhitespaceTokenizerFactory в источнике solr: org.apache.lucene.analysis.core;

Трассировки стека:

5200 T22 oasc.SolrException.log ERROR null:org.apache.solr.common.SolrException: SolrCore 'collection1' is not available due to init failure: Plugin init failure for [schema.xml] fieldType "text_ws": Plugin init failure for [schema.xml] analyzer/tokenizer: Error loading class 'solr.WhitespaceTokenizerFactory'. Schema file is /usr/share/solr2/example/solr/collection1/schema.xml
        at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:823)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:301)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:201)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] fieldType "text_ws": Plugin init failure for [schema.xml] analyzer/tokenizer: Error loading class 'solr.WhitespaceTokenizerFactory'. Schema file is /usr/share/solr2/example/solr/collection1/schema.xml
        at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:608)
        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.CoreContainer.createFromLocal(CoreContainer.java:559)
        at org.apache.solr.core.CoreContainer.create(CoreContainer.java:597)
        at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:251)
        at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:1)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        ... 1 more
    Caused by: org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] fieldType "text_ws": Plugin init failure for [schema.xml] analyzer/tokenizer: Error loading class 'solr.WhitespaceTokenizerFactory'
        at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177)
        at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:468)
        ... 13 more
    Caused by: org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] analyzer/tokenizer: Error loading class 'solr.WhitespaceTokenizerFactory'
        at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177)
        at org.apache.solr.schema.FieldTypePluginLoader.readAnalyzer(FieldTypePluginLoader.java:362)
        at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:95)
        at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:1)
        at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
        ... 14 more
    Caused by: org.apache.solr.common.SolrException: Error loading class 'solr.WhitespaceTokenizerFactory'
        at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:470)
        at org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:573)
        at org.apache.solr.schema.FieldTypePluginLoader$2.create(FieldTypePluginLoader.java:342)
        at org.apache.solr.schema.FieldTypePluginLoader$2.create(FieldTypePluginLoader.java:1)
        at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
        ... 18 more
    Caused by: java.lang.ClassNotFoundException: solr.WhitespaceTokenizerFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:270)
        at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:454)
        ... 22 more
  • 0
    у вас есть lucene-analyzers-common-4.6.1.jar в вашем classpath затмения?
  • 0
    Нет, я пытался запустить sorl из исходного кода, поэтому я не включал в него никакие solr / lucene jar. Однако проблема была решена. Смотрите ответ Аджая.
Теги:
solr
lucene

2 ответа

1
Лучший ответ

Столкнулся с аналогичной проблемой после настройки исходного кода solr с помощью eclipse и tomcat. Я указывал выходной каталог компиляции eclipse как webcontent/WEB-INF/classes. Чтобы позволить tomcat использовать один и тот же каталог webcontent вместо публикации tomcat в папку wtp, включите "подавать модули без публикации" в "Параметры сервера" tomcat. Это поможет classloader найти solr "услуги" в нужном месте. В настоящее время загрузчик классов, используемый для вашего случая, не может найти то же самое.

0

У меня такая же проблема. Ответ Аджай подходит для меня. Последующие шаги: дважды нажмите "Tomcat at localhost" (или любое другое имя) в представлении "серверы". В параметрах сервера установите флажок "подавать модули без публикации".

REF: Технические детали сервисных модулей без публикации в Eclipse WTP и Tomcat?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню