2011-10-12 43 views
4

我在設置Solr作爲CentOS中的Tomcat服務時遇到了問題。我正在使用solr 3.3.0,它應該與從cPanel安裝的Tomcat 5.5一起工作。我得到的錯誤是:如何解決java RuntimeException:在類路徑中找不到資源'solrconfig.xml'?

找不到在類路徑或「/home/sampleuser/public_html/apache-solr/example/solr/./conf/」,CWD資源「solrconfig.xml中」 = /usr/local/jakarta/apache-tomcat-5.5.33/bin

我看到其他人有類似的問題。我搜索並嘗試應用所有的方法。然而到目前爲止,我沒有任何工作。

我做了以下內容:

  1. 複製solr.wartomcat/webapps
  2. 重啓動Tomcat服務
  3. 編輯/usr/local/jakarta/tomcat/webapps/solr/WEB-INF/web.xml爲:

    <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> 
    
  4. /usr/local/jakarta/tomcat/conf/Catalina/localhost創建solr.xml爲:

    <?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> 
    
  5. 編輯Tomcat啓動腳本在etc/init.d(不知道如果我不得不這樣做的話)有:

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

下面是從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 

當我通過shell複製缺少的路徑時,我能夠導航就好。看起來像Tomcat無法找到solrconfig.xml

+0

可能重複 - java.lang中.RuntimeException:找不到資源'solrconfig.xml'](http://stackoverflow.com/questions/1198282/http-status-500-java-lang-runtimeexception-cant-find-resource-solrconfig-xm) – kenorb

+0

它可能是一個錯字:'value =「/ home/sampleuser/public_html/apache-solr/example」override =「true」'。屬性之間沒有空間。 – kenorb

回答

3

第一關:你不需要,除非你明確地定製solr.war至#3 #4 5#3並不推薦使用。 #4和#5是兩種不同的方式來做同樣的事情 - 使用哪一個最方便你(JNDI vs系統屬性)

第二:請注意,雖然#3和#5是一致的,在#4你實際上指定了一個不同的Solr主目錄(你真正想要的父目錄)

第三:我認爲問題的關鍵是文件權限。

由於SOLR-3264導致日誌記錄有點混亂,導致每個核心的「instanceDirs」被錯誤地稱爲「Solr Home」,但似乎發生的是它無法找到(或讀取)您的「 /home/sampleuser/public_html/apache-solr/example/solr/solr.xml「,因此它將進入傳統的」單核「模式,它假設您想將Solr主目錄用作實例目錄(單個)Solr核心 - 所以它然後查找「/home/sampleuser/public_html/apache-solr/example/solr/solrconf.xml」,如果它找不到(或讀取)它放棄的文件。

因此,根據您的主要擔心是否實際上有一個solr.xml(指向備用instanceDirs),它沒有找到,或者如果實際上有一個solrconfig.xml文件,請檢查文件的權限這些文件(及其目錄),並確保它們可以被tomcat服務器的有效用戶讀取。

(FWIW:Solr的3.6以及更高版本將有better logging when solr.xml is not found and legacy mode is used,我已經開了SOLR-3266追求記錄的更好的方法/在未來的不可讀文件示數)[HTTP狀態500

相關問題