Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Solr DataImportHandler not found

I am using Solr 3.3.0 with Tomcat 6.0.26. I was able to successfully install Solr and i was even able to access its web interface using http:/localhost:8084/solr/admin.

Now i want to use its dataimporthandler to index data from my database.I have added following to my solrconfig:

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

I have also created a data-config.xml in same directory.

My solrconfig file has following location for dataimport

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

And i have checked that dataimporthandler.jar file exist in the dist folder at following path C:\web\solr\example\lib\apache-solr-3.3.0\dist

But whenever I type http:/localhost:8084/solr/dataimport or http:/localhost:8084/solr/admin/dataimport it says resource unavailable. I thought it was dur to some problem with Tomcat setting so i stopped tomcat and tried to start Solr from cmd using java -jar start.jar. And i get the following error

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
like image 689
Prim Avatar asked Aug 03 '11 23:08

Prim


4 Answers

I've been looking at this problem for a bit on my own, using solr 4.1 and tomcat. I wasn't able to include the library I needed with <lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" /> -->, which I figured had to be correct because from the directory that I had the solrconfig.xml in, it was two directories up and one down to dist. It wasn't until I temporarily subbed in the direct path (for me, /opt/solr/dist) that I realized that the problem was that I was starting from the wrong directory. It turns out that what I needed was:

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

So, if you're having trouble with including this, check that you're starting from the directory that contains your conf directory, and not the conf directory itself.

like image 167
John Fiala Avatar answered Nov 12 '22 05:11

John Fiala


It seems that for several versions of Solr including 4.3, the dataimport handler jar is not included in the final war file when you build from source.

There is a very simple fix to this by modifying the file /solr/webapp/build.xml.

  1. Open that file and find the "dist" target.
  2. Find this section of the "dist" target:

    <lib dir="${dist}" excludes="${exclude.from.war},${common.classpath.excludes}">

  3. Add this item to the list of includes in that section:

    <include name="apache-solr-dataimporthandler-${version}.jar" />

Save and exit.

Now, when you build, do the following:

  • ant dist-contrib
  • ant dist

To verify that the dataimporthandler jars are in your WAR file, unpack it, and look for it among the jars in the WEB-INF/lib directory.

Some variation of this will probably work for earlier versions too.

like image 40
Jerry Mindek Avatar answered Nov 12 '22 04:11

Jerry Mindek


The jar you are looking for (at least in 3.5) is under the ./dists folder

like image 4
Jackie Avatar answered Nov 12 '22 06:11

Jackie


As far as you are telling us, your jar file name does not match the supplied regexp:

With the given configuration:

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

The file:

dataimporthandler.jar

Does not match the regexp, while it has to, as shown in the sample configuration file for Solr

Probably start by just specifying:

<lib dir="../../dist/"/>
like image 3
Nicolas Modrzyk Avatar answered Nov 12 '22 05:11

Nicolas Modrzyk