Java 在Jetty中嵌入Solr时无法创建CoreContainer
我按照这篇文章上的说明做了 当我尝试执行此代码时:Java 在Jetty中嵌入Solr时无法创建CoreContainer,java,solr,lucene,jetty,Java,Solr,Lucene,Jetty,我按照这篇文章上的说明做了 当我尝试执行此代码时: File home = new File(System.getProperty("solr.solr.home")); CoreContainer container = new CoreContainer(home.getPath()); container.load(); EmbeddedSolrServer server = new EmbeddedSolrServer(container, "collection1"); 我遇到了以下
File home = new File(System.getProperty("solr.solr.home"));
CoreContainer container = new CoreContainer(home.getPath());
container.load();
EmbeddedSolrServer server = new EmbeddedSolrServer(container, "collection1");
我遇到了以下错误:
org.apache.lucene.store.lockOcctainFailedException:锁获取已计时
输出:
NativeFSLock@C:\solr-4.6.0\example\solr\collection1\data\index\write.lock
经调查,装载CoreContainer时发出错误。它试图锁定索引中显然已锁定的文件
进一步的调查显示SolrRequestFilter(由Jetty初始化的过滤器)也实例化了一个CoreContainer,我猜他就是罪犯。当我从web.xml中删除SolrRequestFilter定义时,我能够成功地实例化CoreContainer和EmbeddedServer
我希望了解如何克服这个问题,因为它似乎应该能够工作。您必须找到锁定此索引的人 还有几种方法可能会有所帮助:
- 因为您启动了嵌入式Solr,所以需要确保Solr现在没有运行(我敢打赌99%的原因是这个问题)
- 您可以手动删除此锁定文件