tomcat - 找不到 Solr DataImportHandler

标签 tomcat configuration solr dataimporthandler

我正在使用 Solr 3.3.0使用 Tomcat 6.0.26。我能够成功安装 Solr,甚至能够使用 http:/localhost:8084/solr/admin 访问其 Web 界面。

现在我想使用它的 dataimporthandler 从我的数据库中索引数据。我在我的 solrconfig 中添加了以下内容:

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

我还在同一目录中创建了一个 data-config.xml。

我的 solrconfig 文件具有以下数据导入位置

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

而且我已经检查过 dataimporthandler.jar 文件存在于以下路径 C:\web\solr\example\lib\apache-solr-3.3.0\dist 的 dist 文件夹中

但是每当我键入 http:/localhost:8084/solr/dataimport 或 http:/localhost:8084/solr/admin/dataimport 时,它都会说资源不可用。我认为这是由于 Tomcat 设置出现了一些问题,所以我停止了 tomcat 并尝试使用 java -jar start.jar 从 cmd 启动 Solr。我收到以下错误

HTTP ERROR 500
Problem accessing /solr/. Reason:
Severe errors in solr configuration.
Check your log files for more detailed information on what may be wrong.
If you want solr to continue after configuration errors, change: 

<abortOnConfigurationError>false</abortOnConfigurationError>

in solr.xml

-------------------------------------------------------------
org.apache.solr.common.SolrException: Error loading class    
    'org.apache.solr.handler.dataimport.DataImportHandler'
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:389)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:423)
at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:459)
at  
  org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:157)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:563)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:463)
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:316)
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:207)
at 
   org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:130)
at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at 
 org.mortbay.jetty.handler.ContextHandlerCollection.doStart
 (ContextHandlerCollection.java:156)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.mortbay.start.Main.invokeMain(Main.java:194)
at org.mortbay.start.Main.start(Main.java:534)
at org.mortbay.start.Main.start(Main.java:441)
at org.mortbay.start.Main.main(Main.java:119)
  Caused by: java.lang.ClassNotFoundException:   
  org.apache.solr.handler.dataimport.DataImportHandler
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.net.FactoryURLClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:373)
... 34 more

最佳答案

我一直在自己研究这个问题,使用 solr 4.1 和 tomcat。我无法将我需要的库包含在 <lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" /> --> 中,我认为这必须是正确的,因为从我在其中包含 solrconfig.xml 的目录来看,它是向上的两个目录和向下的 dist 目录。直到我临时替换为直接路径(对我来说,/opt/solr/dist),我才意识到问题是我从错误的目录开始。原来我需要的是:

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

因此,如果您在包含这个时遇到问题,请检查您是从包含您的 conf 目录的目录开始的,而不是 conf 目录本身。

关于tomcat - 找不到 Solr DataImportHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934411/

相关文章:

java - Hibernate、MySQL、Spring MVC、Freemarker :java. sql.SQLSyntaxErrorException:您的 SQL 语法有错误

java - 神秘的 Content-Disposition header 案例

java - 如何在 Eclipse 中设置时区(错误的 cvs 日志时间戳)?

Solr:基于字段的存在而提升,忽略该字段的内容

hadoop - HDFS 上的 Solr 核心创建失败

线程池增加时 Apache Tomcat 线程处于等待状态

logging - Nginx:记录到系统日志

.net - 如何在生产中配置 WCF 客户端?

java - Apache Solr 的工作

tomcat - 要部署到 Tomcat 的哪些文件?