本文介绍了由于第三方库的位置,启动Solr云时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图迁移到Solr 3.1,我的项目使用Dataimport处理程序,
当我启动solr它问我SolrCoreAwar没有找到我将以下文件复制到lib目录
apache-solr-dataimporthandler-3.1 -SNAPSHOT.jar
但是再次出现一个错误,当说明solr
我需要解决这个问题,如果你可以帮助
谢谢



下一个消息是我在启动Solr 3.1时得到的异常。

  java.lang.NoClassDefFoundError:无法初始化类org。 slf4j.LoggerFactory 
在org.apache.solr.handler.dataimport.DataImportHandler。< clinit>(DataImportHandler.java:72)
在java.lang.Class.forName0(本地方法)
在java.lang.Class.forName(Class.java:264)
在org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:373)
在org.apache.solr。 core.SolrCore.createInstance(SolrCore.java:423)
在org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:459)
在org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:154)
在org.apache.solr.core.SolrCore。< init>(SolrCore.java:563)
在org.apache.solr.core.CoreContainer.create(CoreContainer.java:458)
在org.apache.solr.core.CoreContainer.load(CoreContainer.java:316)
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:207)
在org.apache.solr.core.CoreContainer $ Initializer.initialize(CoreContainer.java:130)
在org。 apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94)
在org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
在org.mortbay.component。 AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
在org.mortbay.jetty.servlet.Context.startContext( Context.java:140)
在org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1 282)
在org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
在org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
在org.mortbay .jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.jetty.handler.HandlerCollection .doStart(HandlerCollection.java:152)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java :130)
在org.mortbay.jetty.Server.doStart(Server.java:224)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.xml.XmlConfiguration.mai n(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)
在java.lang.reflect.Method.invoke(Method.java:616)
在org.mortbay.start.Main.invokeMain(Main。 java:194)
在org.mortbay.start.Main.start(Main.java:534)
在org.mortbay.start.Main.start(Main.java:441)
在org.mortbay.start.Main.main(Main.java:119

更新



我已将以下jar文件添加到我的类路径中,上一个异常消失,但是在启动solr服务器时出现了一个新的错误:

 错误实例化请求处理程序,org.apache.solr.handler.dataimport.DataImportHandler不是org.apache.solr.request.SolrRequestHandler 
在org.apache.solr.co re.SolrCore.createInstance(SolrCore.java:425)
在org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:459)
在org.apache.solr.core.RequestHandlers。 initHandlersFromConfig(RequestHandlers.java:154)
在org.apache.solr.core.SolrCore。< init>(SolrCore.java:563)
在org.apache.solr.core.CoreContainer.create (CoreContainer.java:458)
在org.apache.solr.core.CoreContainer.load(CoreContainer.java:316)
在org.apache.solr.core.CoreContainer.load(CoreContainer.java :207)
在org.apache.solr.core.CoreContainer $ Initializer.initialize(CoreContainer.java:130)
在org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94 )
在org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
在org.mortbay.jetty.ser vB.Context.startContext(Context.java:140)
在org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
在org.mortbay.jetty.handler.ContextHandler。 doStart(ContextHandler.java:518)
在org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50)
在org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
在org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
在org.mortbay .component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
在org.mortbay.jetty.Server.doStart (Server.java:224)
在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
在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)
在java.lang .reflect.Method.invoke(Method.java:616)
在org.mortbay.start.Main.invokeMain(Main.java:194)
在org.mortbay.start.Main.start(Main .java:534)
在org.mortbay.start.Main.start(Main.java:441)
在org.mortbay.start.Main.main(Main.java:119)


解决方案

问题现在解决了。



发生此问题是因为dataimporthandler和requesthandler由两个不同的类加载器加载。要解决这个问题,请确保solr只能从相同的类加载器加载它的jar。



首先我确保:



)在solrconfig.xml中,删除确保dataimporthandler只来自一个地方
2)我已经注​​释了所有的指令,并添加了一个引用lib目录的solr目录,所以lib目录路径是 example / solr / lib ,默认情况下此目录不存在。创建它(例如使用 mkdir solr / lib ),并且 solrconfig.xml 中的lib指令变为

3)将dist目录中的jar文件添加到此目录示例/ solr / lib

4)启动您的solr服务器



不要忘记将您的mysql-driver jar复制到包含的路径如果您为此目的使用dataimporthandler,则可以索引您的mysql数据库表。



注意:这适用于solr 4.0


I tried to migrate to Solr 3.1 , my project uses Dataimport handler ,when I started solr it asked me SolrCoreAwar not found I copied the following file to lib directoryapache-solr-dataimporthandler-3.1-SNAPSHOT.jar but again an error appeared when stating solrI need to fix this problem , if you can helpThank You

The next message is the exception I get When Starting 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

Update

I've added the following jar files to my class path , the previous exception disappeared , but a new Error appeared when starting solr server :

 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)
解决方案

The problem is now solved.

This problem occurred because dataimporthandler and requesthandler are loaded by two different class loaders. To solve it, ensure that solr loads its jars only from the same class loader.

First of all I ensured that :

1) In solrconfig.xml remove ensure that dataimporthandler only comes from one place 2) I have commented all directives and added new one that refers to lib directory in solr directory so the lib directory path is example/solr/lib , this directory doesn't exists by default. Create it (for example using mkdir solr/lib) and the lib directive in solrconfig.xml becomes

3) Add the jar file from dist directory to this directory example/solr/lib
4) Fire up your solr server

And don't forget to copy your mysql-driver jar to your include path to be able to index your mysql database tables if you use dataimporthandler for this purpose

Note: This works for solr 4.0

这篇关于由于第三方库的位置,启动Solr云时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 23:31