当前位置: 首页 > news >正文

solr常见异常解决办法

科普篇

来自百度百科:Solr简介Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引。

安装篇

准备工作:jdk-8u111、apache-tomcat-8.0.39、solr6.4.1。
这是solr的下载地址:http://archive.apache.org/dist/lucene/solr/6.4.1/,下载solr-6.4.1.zip就行。

下面是具体的搭建步骤:

第一步:把solr-6.4.1.zip解压之后,找到solr-6.4.1/server/server-webapp/目录下的webapp文件夹,复制粘贴到tomcat下的webapps下;
第二步:把solr-6.4.1/server/lib/ext目录下的所有jar包、和solr-6.4.1/dist下的solr-dataimporthandler-6.4.1.jar、solr-dataimporthandler-extras-6.4.1.jar粘贴复制到tomcat下的solr项目的WEB-INF/lib目录下;
第三步:把server目录下的solr文件夹粘贴复制到其他目录,然后重命名为:solrhome,这是solr核心文件夹。
第四步:修改tomcat下的solr项目的WEB-INF/web.xml,这一步用来指定默认的solrhome。在web.xml开头附近找到:

    <env-entry>
       <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:/solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> 

然后取消注释,把<env-entry-value>填第三步solrhome文件夹的地址。
第五步:在tomcat下的solr项目的WEB-INF下新建classes目录,然后把solr-6.4.1/server/resources下的log4j.properties粘贴过去;
做完这五步就基本搭建完成了,可以访问http://localhost:8080/solr/index.html可以到solr的后台做一些配置工作。

异常篇

下面说一下搭建过程中可能遇到的异常:

  1. 启动tomcat时如果报下面的错误:
严重: Exception starting filter SolrRequestFilter
java.lang.NoClassDefFoundError: com/codahale/metrics/MetricSetat java.lang.Class.getDeclaredConstructors0(Native Method)at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)at java.lang.Class.getConstructor0(Class.java:3075)at java.lang.Class.newInstance(Class.java:412)at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4700)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5340)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.MetricSetat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)... 20 more 

请把solr-6.4.1/server/lib下的metrics-core-3.1.2.jar,metrics-ganglia-3.1.2.jar,metrics-graphite-3.1.2.jar,metrics-jetty9-3.1.2.jar,metrics-jvm-3.1.2.jar这几个jar包放到tomcat下的solr项目的WEB-INF/lib目录下。

  1. 访问http://localhost:8080/solr/index.html时如果报下面的错误:
    HTTP Status 403 - Access to the requested resource has been denied
    **把tomcat下的solr项目的web.xml文件中
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint/> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Enable everything but TRACE</web-resource-name> <url-pattern>/</url-pattern> <http-method-omission>TRACE</http-method-omission> </web-resource-collection> </security-constraint> 

这段注释掉。这段配置限制了对solr资源的访问,注释掉就可以访问了。**

  1. java.lang.NoSuchMethodError:
    解决:solr5.5以上版本在tomcat8下运行
    由于solr5.5.0和solr5.5.1 版本部署在tomcat7下的时候,会报Java.lang.NoSuchMethodError: javax.servlet.ServletInputStream.isFinished()Z的错误,这个是serverlet3.1才有的方法。
  2. javax.servlet.ServletInputStream.isFinished
    解决:solr5版本以上的部署最好使用JDK1.8
    solr5版本以上的部署最好使用JDK1.8,虽然官网没有明确表示solr5必须是要使用JDK1.8,但是其中一部分功能锁需求的JDK版本在JDK1.7以下是没有的
    比如:Java.lang.NoSuchMethodError: javax.servlet.ServletInputStream.isFinished()Z
    我是在全量索引的时候发生的此异常提示:找不到ServletInputStream类下面的isFinished()方法,那么现在我们找到该类ServletInputStream
    如果在这个类下面没有isFinished()方法,那就是JAR包问题,这个类所在的jar包是servlet-api.jar

解决掉上面的异常后,重启tomcat,访问http://localhost:8080/solr/index.html,不出意外会进入如下图的页面

 


作者:张闹闹_
链接:https://www.jianshu.com/p/dd7a59b3f0b5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

相关文章:

  • 细说Cookie
  • 路径
  • 颜色直方图比较数据
  • JVM调优总结(5):典型配置
  • python 之 进程池与线程池
  • 经典正则表达式 (收藏整理)
  • 前端工程师最好的全栈开发实践-设计开发属于自己的nodejs博客
  • eclipse创建android项目出现error libz.so.1: cannot open shared object file:No such file or directory...
  • 回溯法----背包问题
  • FTP攻略
  • __dopostback的用法
  • 保证应用程序只有一个实例运行
  • 活动目录系列之三:多域环境的实现(单站点)
  • linux添加开机自启动脚本示例详解
  • Web内容管理系统 Magnolia
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • canvas 绘制双线技巧
  • css选择器
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Mac转Windows的拯救指南
  • tensorflow学习笔记3——MNIST应用篇
  • 彻底搞懂浏览器Event-loop
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 你不可错过的前端面试题(一)
  • 前言-如何学习区块链
  • 如何学习JavaEE,项目又该如何做?
  • 算法之不定期更新(一)(2018-04-12)
  • 通过几道题目学习二叉搜索树
  • 网页视频流m3u8/ts视频下载
  • 学习JavaScript数据结构与算法 — 树
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • elasticsearch-head插件安装
  • 国内开源镜像站点
  • 选择阿里云数据库HBase版十大理由
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (31)对象的克隆
  • (4.10~4.16)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C++)八皇后问题
  • (C语言)球球大作战
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (力扣)1314.矩阵区域和
  • (一)Dubbo快速入门、介绍、使用
  • *2 echo、printf、mkdir命令的应用
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net CoreRabbitMQ消息存储可靠机制
  • .Net mvc总结
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net 生成二级域名
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .Net(C#)常用转换byte转uint32、byte转float等