Exception 如何修复';收藏1';由于初始化失败,哪个目录不可用:无法创建目录?

Exception 如何修复';收藏1';由于初始化失败,哪个目录不可用:无法创建目录?,exception,solr,tomcat7,Exception,Solr,Tomcat7,我正在Ubuntu 13.10中安装Solr4.5.1和Tomcat7 我总是遇到错误: org.apache.solr.core.CoreContainer; Unable to create core: collection1 org.apache.solr.common.SolrException: Cannot create directory: /opt/solr/example/solr/collection1/data 当我为Solr在collection1中创建data和dat

我正在Ubuntu 13.10中安装Solr4.5.1和Tomcat7

我总是遇到错误:

org.apache.solr.core.CoreContainer; Unable to create core: collection1
org.apache.solr.common.SolrException: Cannot create directory: /opt/solr/example/solr/collection1/data
当我为Solr在
collection1
中创建
data
data/index
文件夹时,它给了我错误信息:

org.apache.solr.common.SolrException: Lock obtain timed out: NativeFSLock@/opt/solr/example/solr/collection1/data/index/write.lock: java.io.FileNotFoundException: /opt/solr/example/solr/collection1/data/index/write.lock (Permission denied)
我在同一本字典中尝试了jetty模式,效果很好

以下是
solrconfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<config>
<luceneMatchVersion>4.5</luceneMatchVersion>
<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
<dataDir>${solr.data.dir:}</dataDir>
...

有人知道吗?谢谢


我发现这个问题是因为文件夹的特权。在我将
$SOLR\u HOME
的所有者及其子字典更改为
tomcat7
后,它成功了。

对于运行SOLR的服务器,文件夹必须是可写的

因此,请检查
/opt/solr/example/solr/collection1/

文件夹权限并启用写入,类似于:

sudo chmod a+w /opt/solr/example/solr/collection1/ -R
或更改文件夹所有者:

sudo chown tomcat7. /opt/solr/example/solr/collection1/ -R

检查权限并确保solr主目录和子目录可由tomcat7读取和写入。然后在上面发布的solrconfig.xml文件中,查看以下行:
${solr.data.dir:}

${solr.data.dir:}
替换为数据目录的路径,您还必须创建该目录并确保具有读/写权限,如下所示:

<dataDir>${solr.data.dir:/home/solr/solr-4.6.0/example/solr/collection1/data}</dataDir>
同样,在Tomcat管理器GUI中停止并启动solr。
希望这有帮助

我使用了与spring tc server一起部署的SOLR 4.7.1,遇到了相同的错误。“collection1”是硬编码的,它会查找此目录,如果找不到则会失败。为了让它工作,我将“collection1”从examples目录复制到我的solr主页,并能够启动服务器。后来我卸载了collection1,因为我不需要它

引用SOLR-3753问题:

“如果没有solr.xml文件,当前的4.0行为是使用CoreContainer.java中声明的默认值。这需要记录;可能在solr.xml和/或CoreAdmin页面上。(请参阅CoreAdmin.java的第94行,其中声明了默认名称“collection1”。没有此文档,用户可能会对collection1“核心名称来自(我是其中之一)。”

因此,一个简单的解决方案是在$solr_HOME/examples/solr下创建一个solr.xml文件/

参考文献

复制文件夹示例/集合的所有内容,并将其移动到tomcat/solr。然后将文件solr.xml复制到solr文件夹。 重新启动tomcat7

访问solr ui,一切都会好起来。
对于在tomcat7下运行的Solr 4.x版。

sudo chown tomcat7./opt/Solr/example/Solr/collection1/-R是preffed。
<dataDir>${solr.data.dir:/home/solr/solr-4.6.0/example/solr/collection1/data}</dataDir>
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/home/solr/solr-4.6.0/dist/solr-4.6.0.war" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/home/solr/solr-4.6.0/example/solr" override="true"/>
</Context>