【问题标题】:Solr Tomcat org.apache.solr.common.SolrException: lazy loading errorSolr Tomcat org.apache.solr.common.SolrException:延迟加载错误
【发布时间】:2023-03-15 20:32:01
【问题描述】:

Ubuntu 14.04

我使用 sudo apt-get install solr-tomcat 安装。

似乎“核心”功能已安装并且正在运行,但没有任何插件(或者我只是不知道在哪里寻找)。

我正在尝试使用 extract 函数,它是一个插件。

当我尝试时,我得到了这个

org.apache.solr.common.SolrException:延迟加载错误 在 org.apache.solr.core.RequestHandlers$LazyRequestHandlerWrapper.getWrappedHandler(RequestHandlers.java:260) 在 org.apache.solr.core.RequestHandlers$LazyRequestHandlerWrapper.handleRequest(RequestHandlers.java:242) 在 org.apache.solr.core.SolrCore.execute(SolrCore.java:1376) 在 org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365) 在 org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 在 java.lang.Thread.run(Thread.java:745) 引起:org.apache.solr.common.SolrException:加载类“solr.extraction.ExtractingRequestHandler”时出错 在 org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:414) 在 org.apache.solr.core.SolrCore.createInstance(SolrCore.java:419) 在 org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:455) 在 org.apache.solr.core.RequestHandlers$LazyRequestHandlerWrapper.getWrappedHandler(RequestHandlers.java:251) ... 16 更多 引起:java.lang.ClassNotFoundException:solr.extraction.ExtractingRequestHandler 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(Class.java:274) 在 org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:398) ... 19 更多

我手动下载了最新版本只是为了调查,确实找到了一个“提取”目录,并且在其中找到了一个名为 ExtractingRequestHandler.java 的文件。

我不是 Java 人。我寻找与错误指示类似的路径,发现“/usr/share/maven-repo/org/apache/solr/solr-core”与“org.apache.solr.core”不严格对应。所以,我很犹豫在这里假设什么。

Solr 正在搜索“提取”目录 - 我只是不确定在哪里。

我的 solrconfig.xml 文件有这个

<requestHandler name="/update/extract" 
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <!-- All the main content goes into "text"... if you need to return
           the extracted text or do highlighting, use a stored field. -->
      <str name="fmap.content">text</str>
      <str name="lowernames">true</str>
      <str name="uprefix">ignored_</str>

      <!-- capture link hrefs but ignore div attributes -->
      <str name="captureAttr">true</str>
      <str name="fmap.a">links</str>
      <str name="fmap.div">ignored_</str>
    </lst>
  </requestHandler>

我尝试将提取目录复制到这两个目录中: /usr/share/maven-repo/org/apache/solr/ /etc/solr

希望要么是“主”solr 目录,但运气不好。

我加了

<lib dir="/var/lib/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction" />

到我的 solrconfig.xml 并在 tomcat 日志中观察到这一点:

信息:将“文件:/var/lib/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction/ExtractingRequestHandler.java”添加到类加载器

仍然没有运气。

提前致谢。

编辑:

我检查了我的 tomcat 日志并看到以下内容:

2014 年 11 月 23 日上午 12:53:44 org.apache.solr.core.RequestHandlers initHandlersFromConfig 信息:添加惰性请求处理程序: solr.extraction.ExtractingRequestHandler

这很奇怪,因为它表明在 solr.extraction.ExtractingRequestHandler 中创建了一个“惰性 requestHandler”,这与错误相矛盾:

加载类“solr.extraction.ExtractingRequestHandler”时出错

如果我从上面的配置中删除“startup = 'lazy'”属性,当我重新启动Tomcat时,会出现错误:

严重:org.apache.solr.common.SolrException:加载类时出错 'solr.extraction.ExtractingRequestHandler'

【问题讨论】:

    标签: java tomcat solr ubuntu-14.04


    【解决方案1】:

    您似乎正在将源目录添加到类路径中 - 您需要将编译后的版本及其依赖项添加到类路径中。

    在正态分布中(来自 Solr 主页),它位于 contrib/extraction/lib,它还捆绑了提取模块的其他依赖项。

    来自该目录中的 README.txt:

    开始

    您将需要 Solr 启动并运行。然后,只需添加提取 JAR 文件以及 Tika 依赖项(在 ./lib 文件夹中) 到你的 Solr Home lib 目录。有关挂钩的更多详细信息,请参阅http://wiki.apache.org/solr/ExtractingRequestHandler 和配置。

    尽管您似乎在遵循旧版本的操作方法(来自您的请求处理程序名称)。 current configuration is detailed in the community wiki,还有一个完整的示例捆绑在分发中。

    检索和提取文件:

    $ wget http://<mirror>/lucene/solr/4.10.2/solr-4.10.2.tgz
    $ tar xvzf solr-4.10.2.tgz
    $ cd solr-4.10.2/contrib/extraction/lib/
    $ ls
    apache-mime4j-core-0.7.2.jar    pdfbox-1.8.4.jar
    apache-mime4j-dom-0.7.2.jar     poi-3.10.1.jar
    aspectjrt-1.6.11.jar            poi-ooxml-3.10.1.jar
    bcmail-jdk15-1.45.jar           poi-ooxml-schemas-3.10.1.jar
    bcprov-jdk15-1.45.jar           poi-scratchpad-3.10.1.jar
    boilerpipe-1.1.0.jar            rome-0.9.jar
    commons-compress-1.7.jar        tagsoup-1.2.1.jar
    dom4j-1.6.1.jar                 tika-core-1.5.jar
    fontbox-1.8.4.jar               tika-parsers-1.5.jar
    icu4j-53.1.jar                  tika-xmp-1.5.jar
    isoparser-1.0-RC-1.jar          vorbis-java-core-0.1.jar
    jdom-1.0.jar                    vorbis-java-tika-0.1.jar
    jempbox-1.8.4.jar               xercesImpl-2.9.1.jar
    jhighlight-1.0.jar              xmlbeans-2.6.0.jar
    juniversalchardet-1.0.3.jar     xmpcore-5.1.2.jar
    metadata-extractor-2.6.2.jar    xz-1.4.jar
    

    【讨论】:

    • downloads 在 contrib/extraction/lib 文件夹中没有任何内容。还是我错过了什么?
    • 从其中一个镜像下载solr-4.10.2.tgz 并提取它在solr-4.10.2/contrib/extraction/lib 中提供了32 个.jar。不知道你在做什么 - 我在答案中添加了一个例子。
    • 哇,我很抱歉。我正在下载源代码而不是编译版本。现在正在运行,非常感谢您的帮助。
    猜你喜欢
    • 2012-08-13
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多