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的后台做一些配置工作。
异常篇
下面说一下搭建过程中可能遇到的异常:
- 启动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目录下。
- 访问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资源的访问,注释掉就可以访问了。**
- java.lang.NoSuchMethodError:
解决:solr5.5以上版本在tomcat8下运行
由于solr5.5.0和solr5.5.1 版本部署在tomcat7下的时候,会报Java.lang.NoSuchMethodError: javax.servlet.ServletInputStream.isFinished()Z的错误,这个是serverlet3.1才有的方法。 - 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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
solr常见异常解决办法的更多相关文章
- spring集成Junit做单元测试及常见异常解决办法
spring-test依赖包 <!--Spring-test --> <!-- https://mvnrepository.com/artifact/org.springframew ...
- Android Studio 常见异常解决办法
Error:Failed to crunch file D:\Englis_installation_directory\AndroidStudio\AndroidWorkSpace\YoukAndr ...
- ClientAbortException 异常解决办法
http://blog.sina.com.cn/s/blog_43eb83b90102ds8w.html ClientAbortException 异常解决办法 当我们用Servlet导出图片,或用J ...
- redis 异常解决办法
redis 异常解决办法 26069:M 08 Aug 17:06:58.858 # WARNING: The TCP backlog setting of 511 cannot be enforce ...
- Attribute name invalid for tag form according to TLD异常解决办法_gaigai_百度空间
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- Android HttpURLConnection.connect找不到源 HttpURLConnection连接失败 HttpURLConnection.connect IO异常 解决办法
Android HttpURLConnection.connect找不到源 HttpURLConnection连接失败 HttpURLConnection.connect IO异常 解决办法 以下代 ...
- PHP编译安装时常见错误解决办法,php编译常见错误
PHP编译安装时常见错误解决办法,php编译常见错误 1.configure: error: xslt-config not found. Please reinstall the libxslt & ...
- org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session异常解决办法
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread ...
- orcal 数据库 maven架构 ssh框架 的全xml环境模版 及常见异常解决
创建maven项目后,毫不犹豫,超简单傻瓜式搞定dependencies(pom.xml 就是maven的依赖管理),这样你就有了所有你要的包 <project xmlns="http ...
随机推荐
- c++ 容器排序
#include <algorithm> #include <functional> #include <array> #include <iostream& ...
- Eclipse.修改项目的JDK版本
1.我实际使用过程中,只是修改了 项目右键-->Properties-->左侧选择"Java Compiler" -->右侧的"JDK Complian ...
- session与cookie详解
session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优 ...
- mysql中InnoDB存储引擎的行锁和表锁
Mysql的InnoDB存储引擎支持事务,默认是行锁.因为这个特性,所以数据库支持高并发,但是如果InnoDB更新数据的时候不是行锁,而是表锁的话,那么其并发性会大打折扣,而且也可能导致你的程序出错. ...
- Ubuntu下XTerm乱码问题的解决及XTerm的简单配置
本人比较喜欢Ubuntu这个Linux的发行版,主要是安装程序插件什么的都比较方便,推荐新手使用,可以免去很多麻烦的配置,将注意力放在编程的学习上,当然如果是想专门学Linux的,还是推荐在Cento ...
- 011PHP文件处理——文件处理 文件内容分页操作类
<?php /** * 文件内容分页操作类: */ //访问地址:http://basicphp.com/006file/011.php?&page=1 class StrPage { ...
- do-while语句和while的区别
do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件.其实就是,代码在刚开始执行的时候,都是要先走一遍do循环体内的代码,然后在与while里面的条件进行判断,成 ...
- JAVA实现Excel导入/导出【转】
JAVA实现Excel导入/导出[转] POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bi ...
- 古董留念 - Microsoft Office 4.2中文版
Office 4.2是Office 95的前一个版本,最适合运行在Windows 3.x上,但即使是最新的Windows 7 32位版也是可以安装它的(不信你可以试试)! 原版以软盘为载体,安装一次需 ...
- vue: register and import
components/header-nav/menu-nav.vue <template> <div> menu nav </div> </template& ...