How to fix java RuntimeException: Can't find the resource 'solrconfig.xml' in the classpath?

I'm having trouble setting up Solr as Tomcat services on CentOS. Im using solr 3.3.0, which should work with Tomcat 5.5 installed from cPanel. The error I was getting:

Cannot find the resource 'solrconfig.xml' in the classpath or '/home/sampleuser/public_html/apache-solr/example/solr/./conf/', cwd = / usr / local / jakarta / apache-tomcat -5.5. 33 / bin

I have seen other people having similar problems. I googled and tried to apply all the approaches. However, so far nothing has worked.

I have done the following:

  • Copied solr.war in tomcat/webapps
  • Restarted Tomcat Service
  • Edited /usr/local/jakarta/tomcat/webapps/solr/WEB-INF/web.xml as:

     <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/home/sampleuser/public_html/apache-solr/example/solr</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> 
  • Created by solr.xml in /usr/local/jakarta/tomcat/conf/Catalina/localhost as:

     <?xml version="1.0" encoding="utf-8"?> <Context docBase="/usr/local/jakarta/tomcat/webapps/solr.war" debug="0" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="/home/sampleuser/public_html/apache-solr/example"override="true"/> </Context> 
  • Edited launch of tomcat script in etc/init.d (not sure if I had to do this at all) using

export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/home/sampleuser/public_html/apache-solr/example/solr"

The following is the complete error log from catalina.err:

 Oct 9, 2011 7:35:06 PM org.apache.catalina.core.StandardService stop INFO: Stopping service Catalina Oct 9, 2011 7:35:06 PM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextDestroyed() Oct 9, 2011 7:35:06 PM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextDestroyed() Oct 9, 2011 7:35:06 PM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextDestroyed() Oct 9, 2011 7:35:06 PM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextDestroyed() Oct 9, 2011 7:35:06 PM org.apache.coyote.http11.Http11BaseProtocol destroy INFO: Stopping Coyote HTTP/1.1 on http-8080 Oct 9, 2011 7:35:21 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk/jre/lib/amd64/server:/usr/local/jdk/jre/lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib Oct 9, 2011 7:35:23 PM org.apache.coyote.http11.Http11BaseProtocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 Oct 9, 2011 7:35:23 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 2875 ms Oct 9, 2011 7:35:23 PM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Oct 9, 2011 7:35:23 PM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/5.5.33 Oct 9, 2011 7:35:23 PM org.apache.catalina.core.StandardHost start INFO: XML validation disabled Oct 9, 2011 7:35:24 PM org.apache.catalina.startup.HostConfig deployDescriptor WARNING: A docBase /usr/local/jakarta/tomcat/webapps/solr.war inside the host appBase has been specified, and will be ignored Oct 9, 2011 7:35:25 PM org.apache.solr.core.SolrResourceLoader locateSolrHome INFO: Using JNDI solr.home: /home/sampleuser/public_html/apache-solr/example/solr Oct 9, 2011 7:35:25 PM org.apache.solr.core.SolrResourceLoader <init> INFO: Solr home set to '/home/sampleuser/public_html/apache-solr/example/solr/' Oct 9, 2011 7:35:25 PM org.apache.solr.servlet.SolrDispatchFilter init INFO: SolrDispatchFilter.init() Oct 9, 2011 7:35:25 PM org.apache.solr.core.SolrResourceLoader locateSolrHome INFO: Using JNDI solr.home: /home/sampleuser/public_html/apache-solr/example/solr Oct 9, 2011 7:35:25 PM org.apache.solr.core.CoreContainer$Initializer initialize INFO: looking for solr.xml: /home/sampleuser/public_html/apache-solr/example/solr/solr.xml Oct 9, 2011 7:35:25 PM org.apache.solr.core.SolrResourceLoader locateSolrHome INFO: Using JNDI solr.home: /home/sampleuser/public_html/apache-solr/example/solr Oct 9, 2011 7:35:25 PM org.apache.solr.core.CoreContainer <init> INFO: New CoreContainer: solrHome=/home/sampleuser/public_html/apache-solr/example/solr/ instance=1537767228 Oct 9, 2011 7:35:25 PM org.apache.solr.core.SolrResourceLoader <init> INFO: Solr home set to '/home/sampleuser/public_html/apache-solr/example/solr/' Oct 9, 2011 7:35:26 PM org.apache.solr.core.SolrResourceLoader <init> INFO: Solr home set to '/home/sampleuser/public_html/apache-solr/example/solr/./' Oct 9, 2011 7:35:26 PM org.apache.solr.common.SolrException log SEVERE: java.lang.RuntimeException: Can't find resource 'solrconfig.xml' in classpath or '/home/sampleuser/public_html/apache-solr/example/solr/./conf/', cwd=/usr/local/jakarta/apache-tomcat-5.5.33/bin at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:268) at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:234) at org.apache.solr.core.Config.<init>(Config.java:141) at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:131) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:435) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:316) at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:133) at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:221) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:302) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:78) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3666) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4258) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:634) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:561) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:496) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1203) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:319) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:448) at org.apache.catalina.core.StandardServer.start(StandardServer.java:700) at org.apache.catalina.startup.Catalina.start(Catalina.java:552) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:219) Oct 9, 2011 7:35:26 PM org.apache.solr.servlet.SolrDispatchFilter init INFO: user.dir=/usr/local/jakarta/apache-tomcat-5.5.33/bin Oct 9, 2011 7:35:26 PM org.apache.solr.servlet.SolrDispatchFilter init INFO: SolrDispatchFilter.init() done Oct 9, 2011 7:35:26 PM org.apache.solr.servlet.SolrServlet init INFO: SolrServlet.init() Oct 9, 2011 7:35:26 PM org.apache.solr.core.SolrResourceLoader locateSolrHome INFO: Using JNDI solr.home: /home/sampleuser/public_html/apache-solr/example/solr Oct 9, 2011 7:35:26 PM org.apache.solr.servlet.SolrServlet init INFO: SolrServlet.init() done Oct 9, 2011 7:35:26 PM org.apache.solr.core.SolrResourceLoader locateSolrHome INFO: Using JNDI solr.home: /home/sampleuser/public_html/apache-solr/example/solr Oct 9, 2011 7:35:26 PM org.apache.solr.servlet.SolrUpdateServlet init INFO: SolrUpdateServlet.init() done 

When I copy the missing path through the shell, I was able to navigate perfectly. It seems like Tomcat cannot find solrconfig.xml .

+4
source share
1 answer

First: you do not need # 3 and # 4 and 5. # 3 is really not recommended unless you explicitly set up solr.war, # 4 and # 5 are two different ways to do the same thing - use what you most convenient (JNDI vs system properties)

Second: note that although # 3 and # 5 are consistent, in # 4 you are actually specifying a different Solr source directory (the parent directory of what you really want)

Thirdly: I think that the essence of your problem is file permissions.

Logs get a little confused due to SOLR-3264 , which leads to the fact that "instanceDirs" for each core is incorrectly referred to as "Solr Home", but it does not seem to be able to find (or read) your "/ home / sampleuser / public_html /apache-solr/example/solr/solr.xml "so that it enters the legacy" Single Core "mode, which assumes that you want to use your Solr Home dir as a Dir instance for one (one) Solr Core, so it looking for "/home/sampleuser/public_html/apache-solr/example/solr/solrconf.xml" and if he cannot find (or read) the file that he gives.

So, depending on what your main problem is that you have a solr.xml file (pointing to an alternative instance of Dirs) that it does not find, or if you have a solrconfig.xml file where it looks, check file permissions files (and their directories) and make sure that they are readable by an effective user of your tomcat server.

(FWIW: Solr 3.6 and up will be better off logging when the solr.xml file is not found and using legacy mode , and I opened SOLR-3266 to pursue better ways to log / error on unreadable files into the future)

+3
source

All Articles