org.apache.solr.common.SolrException:加载类'org.apache.solr.handler.dataimport.DataImportHandler时出错

时间:2012-12-17 12:10:53

标签: solr dataimporthandler

我是solr的新手。我已经在我的服务器上安装了apache tomcat 7.0,并且我在服务器上安装了solr 3.6.1。

我的D:\驱动器上有网络人员设置的solr-home文件夹。其中的文件夹是: 箱等,日志,多核,web应用。

在multicore文件夹中有:core0,core1,exampledocs,README.txt和solr.xml。在webapps文件夹中,我没有别的solr.war文件。

现在我在名为ConfigUserTextUpdate的多核文件夹中再保留一个核心文件夹,其中包含conf文件夹并重新启动tomcat服务,我可以在localhost / solr上看到新核心。

现在我将db-config.xml添加到ConfigUserTextUpdate核心。以下是内容:

<dataConfig>
<dataSource
type="JdbcDataSource"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://<dbname>\<servername>;databaseName=dbname" user="username"
    password="password"/>
<document>
    <entity name="ConfigUserTextUpdate" query="UserTextUpdate_Index">
    </entity>
</document>
</dataConfig>

到这里一切都很好,所有三个核心都显示在localhost / solr上。 现在在核心ConfigUserTextUpdate的solrconfig.xml中添加行

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">db-data-config.xml</str>
    </lst>
  </requestHandler>

它开始给出错误,如下所示:

HTTP Status 500 - Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you
     

希望solr在配置错误后继续,更改:   虚假的   solr.xml ----------------------------------------------- --------------   org.apache.solr.common.SolrException:加载类时出错   'org.apache.solr.handler.dataimport.DataImportHandler'at   org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:394)   在org.apache.solr.core.SolrCore.createInstance(SolrCore.java:419)at   org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:455)   在   org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:159)   在org.apache.solr.core.SolrCore。(SolrCore.java:563)at   org.apache.solr.core.CoreContainer.create(CoreContainer.java:480)at at   org.apache.solr.core.CoreContainer.load(CoreContainer.java:332)at at   org.apache.solr.core.CoreContainer.load(CoreContainer.java:216)at at   org.apache.solr.core.CoreContainer $ Initializer.initialize(CoreContainer.java:161)   在   org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96)   在   org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)   在   org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)   在   org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)   在   org.apache.catalina.core.ApplicationFilterConfig。(ApplicationFilterConfig.java:103)   在   org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)   在   org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)   在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)   在   org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)   在   org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)   在   org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)   在   org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)   在   org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1655)   at java.util.concurrent.Executors $ RunnableAdapter.call(Unknown Source)   at java.util.concurrent.FutureTask $ Sync.innerRun(Unknown Source)at   java.util.concurrent.FutureTask.run(未知来源)at   java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(未知来源)   at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)   在java.lang.Thread.run(未知来源)引起:   抛出java.lang.ClassNotFoundException:   org.apache.solr.handler.dataimport.DataImportHandler at   java.net.URLClassLoader $ 1.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   java.net.FactoryURLClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   java.lang.Class.forName0(Native Method)at   java.lang.Class.forName(未知来源)at   org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:378)   ......还有27个

我尝试过很多东西,比如将dataimporthandler.jar文件放在核心文件夹中,以及在各个站点上给出的其他很多东西,但仍然会出现同样的错误。请帮帮我。

如果您需要更多信息,请与我们联系。

提前致谢。

4 个答案:

答案 0 :(得分:25)

你必须编辑solrconfig.xml并添加库的路径,例如:

<lib dir="../../../../dist/" regex="apache-solr-dataimporthandler-.*\.jar" />

..如果你仍然在该目录中。在示例solrconfigs中,我发现它们正好位于

之下
<luceneMatchVersion>LUCENE_40</luceneMatchVersion>

答案 1 :(得分:4)

在solr-4.3.0中尝试实现:http://wiki.apache.org/solr/DIHQuickStart添加:

<lib dir="../../../contrib/dataimporthandler/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" />
文件中的

PROJECT-HOME \ solr \ collection1 \ conf \ solrconfig.xml

在现有的行下:

<lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />

解决了这个问题。 也许你需要重启servlet容器(在默认情况下:Jetty)。

答案 2 :(得分:1)

solr-5.2.0 版本的问题。当我切换到 solr-5.5.0 时,问题已经解决。

答案 3 :(得分:0)

有类似的问题,我的问题是使用符号链接(solr没有关注它们)。