Ошибка при запуске облака Solr, из-за расположения сторонних библиотек - PullRequest
4 голосов
/ 03 мая 2011

Я пытался перейти на Solr 3.1, мой проект использует обработчик Dataimport, когда я запустил solr, он спросил меня, SolrCoreAwar не найден, я скопировал следующий файл в каталог lib apache-solr-dataimporthandler-3.1-SNAPSHOT.jar, но снова ошибкапоявилось при указании Solr Мне нужно исправить эту проблему, если вы можете помочь Спасибо

Следующее сообщение является исключением, которое я получаю при запуске Solr 3.1

 java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.LoggerFactory
    at org.apache.solr.handler.dataimport.DataImportHandler.<clinit>(DataImportHandler.java:72)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:373)
    at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:423)
    at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:459)
    at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:154)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:563)
    at org.apache.solr.core.CoreContainer.create(CoreContainer.java:458)
    at org.apache.solr.core.CoreContainer.load(CoreContainer.java:316)
    at org.apache.solr.core.CoreContainer.load(CoreContainer.java:207)
    at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:130)
    at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94)
    at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.mortbay.start.Main.invokeMain(Main.java:194)
    at org.mortbay.start.Main.start(Main.java:534)
    at org.mortbay.start.Main.start(Main.java:441)
    at org.mortbay.start.Main.main(Main.java:119

Обновление

Я добавил следующие jar-файлы в свой путь к классам, предыдущее исключение исчезло, но при запуске сервера solr появилась новая Ошибка:

 Error Instantiating Request Handler, org.apache.solr.handler.dataimport.DataImportHandler is not a org.apache.solr.request.SolrRequestHandler
    at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:425)
    at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:459)
    at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:154)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:563)
    at org.apache.solr.core.CoreContainer.create(CoreContainer.java:458)
    at org.apache.solr.core.CoreContainer.load(CoreContainer.java:316)
    at org.apache.solr.core.CoreContainer.load(CoreContainer.java:207)
    at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:130)
    at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94)
    at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.mortbay.start.Main.invokeMain(Main.java:194)
    at org.mortbay.start.Main.start(Main.java:534)
    at org.mortbay.start.Main.start(Main.java:441)
    at org.mortbay.start.Main.main(Main.java:119)

Ответы [ 5 ]

10 голосов
/ 20 июня 2011

Теперь проблема решена.

Эта проблема возникла из-за того, что dataimporthandler и requesthandler загружаются двумя разными загрузчиками классов. Чтобы решить эту проблему, убедитесь, что solr загружает свои jar-файлы только из загрузчика того же класса.

Прежде всего, я убедился, что:

1) В solrconfig.xml удалите, убедитесь, что dataimporthandler приходит только из одного места 2) Я прокомментировал все директивы и добавил новую, которая ссылается на каталог lib в каталоге solr, поэтому путь к каталогу lib равен example/solr/lib, по умолчанию этот каталог не существует. Создайте его (например, используя mkdir solr/lib) и директива lib в solrconfig.xml станет

<lib dir="./solr/lib"/>   

3) Добавить файл jar из каталога dist в этот пример каталога / solr / lib
4) Запустите ваш сервер Solr

И не забудьте скопировать свой jar-файл mysql-драйвера в ваш путь включения, чтобы иметь возможность индексировать таблицы базы данных mysql, если вы используете dataimporthandler для этой цели

Примечание: это работает для solr 4.0

0 голосов
/ 14 февраля 2012

# solr 3.5: проблема с загрузчиком классов была правильно определена выше, но решение, похоже, не сработало для меня.Я просто поместил jar-файлы dataimporthandler в файл solr.war, и это, конечно, сработало.

0 голосов
/ 17 января 2012

Через пару месяцев вы можете получить ответ.

У меня точно такая же проблема, и я смог ее преодолеть, фактически использовав абсолютные пути к обработчику импорта данных.

0 голосов
/ 05 июня 2011

@ см. SOLR-2574 для решения и пример рабочего проекта.Он для Solr 3.2, но работает и с Sorl 3.1.

Короче говоря, добавьте зависимость от slf4j-nop.

   <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-nop</artifactId>
      <version>1.6.1</version>
    </dependency>
0 голосов
/ 03 мая 2011

Скорее всего, проблема глубже, но вы можете попробовать добавить в свой путь к классу slf4j apis.(http://www.slf4j.org/download.html).

...