【问题标题】:org.apache.solr.common.SolrException: Error loading class 'org.apache.solr.handler.dataimport.DataImportHandlerorg.apache.solr.common.SolrException:加载类 'org.apache.solr.handler.dataimport.DataImportHandler 时出错
【发布时间】:2017-12-08 17:10:19
【问题描述】:

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

我的 D:\ 驱动器上有网络人员设置的 solr-home 文件夹。其中的文件夹是: bin,etc,logs,multicore,webapps.

在多核文件夹中有: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' 在 org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:394) 在 org.apache.solr.core.SolrCore.createInstance(SolrCore.java:419) 在 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) 在 org.apache.solr.core.CoreContainer.create(CoreContainer.java:480) 在 org.apache.solr.core.CoreContainer.load(CoreContainer.java:332) 在 org.apache.solr.core.CoreContainer.load(CoreContainer.java:216) 在 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) 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源) 在 java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 在 java.util.concurrent.FutureTask.run(未知来源)在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source) 引起: java.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.DataImportHandler 在 java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(未知来源)在 java.lang.ClassLoader.loadClass(Unknown Source) 在 java.net.FactoryURLClassLoader.loadClass(Unknown Source) 在 java.lang.ClassLoader.loadClass(Unknown Source) 在 java.lang.Class.forName0(本机方法)在 java.lang.Class.forName(未知来源)在 org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:378) ... 27 更多

我已经尝试了很多方法,例如将 dataimporthandler.jar 文件放在核心文件夹中以及在各个站点上提供的其他许多东西,但仍然遇到相同的错误。请帮我解决这些问题。

如果您需要更多信息,请告诉我。

提前致谢。

【问题讨论】:

    标签: solr dataimporthandler


    【解决方案1】:

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

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

    ..如果您仍然在该目录中。在示例 solrconfigs 中,我发现他们把它放在下面

    <luceneMatchVersion>LUCENE_40</luceneMatchVersion>
    

    【讨论】:

    • 对于 solr 4.5.0 示例配置 (example/solr/collection1/conf/solrconfig.xml) 这对我有用:&lt;lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" /&gt;
    • 我使用 solr 5.3.0。我添加了不同的路径并工作。
    【解决方案2】:

    在 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)。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 2011-01-17
          • 1970-01-01
          • 1970-01-01
          • 2022-10-25
          • 2014-10-31
          • 2012-12-15
          相关资源
          最近更新 更多