我正在使用 Solr 在我的项目中广泛处理搜索,并且我想在 IntelliJ IDEA 中创建一个子模块,我可以将其作为 WAR 包独立部署或通过 IntelliJ 与具有预定义配置的其他工件一起启动。
我正在使用本教程开始使用 Solr 和 Maven。我所做的唯一更改是删除了 Jetty 插件(因为我正在部署到 Tomcat)。
构建 WAR 文件按预期工作,但是使用 IntelliJ 启动或自己将其部署到 Tomcat 会返回此堆栈跟踪:
org.apache.solr.common.SolrException:无法在 org.apache.solr.core.CoreContainer.create( CoreContainer.java:657) 在 org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:364) 在 org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:356) 在 java.util .concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439 ) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask( ThreadPoolExecutor.java:895) 在 java。util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680)
原因:java.io.IOException: Can't find resource 'solrconfig.xml' in classpath or 'solr/collection1/conf/', cwd=/usr/local/Cellar/tomcat/7.0.42/libexec/bin at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:322) at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:287) at org.apache.solr.core.Config.(Config .java:116) 在 org.apache.solr.core.Config.(Config.java:86) 在 org.apache.solr.core.SolrConfig.(SolrConfig.java:120) 在 org.apache.solr.core。 CoreContainer.createFromLocal(CoreContainer.java:589) ... 11 更多
23Sep13-10:54:34 错误(SolrException.java:119)-null:org.apache.solr.common.SolrException:无法创建核心:在 org.apache.solr.core.CoreContainer.recordAndThrow(CoreContainer.java :1150) 在 org.apache.solr.core.CoreContainer.create(CoreContainer.java:666) 在 org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:364) 在 org.apache.solr.core .CoreContainer$1.call(CoreContainer.java:356) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java .util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java :138) 在 java.util.concurrent.ThreadPoolExecutor$Worker。runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680)
原因:org.apache.solr.common.SolrException:无法在 org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:592) 的 org.apache.solr.core.CoreContainer 加载 solrconfig.xml 的配置.create(CoreContainer.java:657) ... 10 更多
原因:java.io.IOException: Can't find resource 'solrconfig.xml' in classpath or 'solr/collection1/conf/', cwd=/usr/local/Cellar/tomcat/7.0.42/libexec/bin at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:322) at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:287) at org.apache.solr.core.Config.(Config .java:116) 在 org.apache.solr.core.Config.(Config.java:86) 在 org.apache.solr.core.SolrConfig.(SolrConfig.java:120) 在 org.apache.solr.core。 CoreContainer.createFromLocal(CoreContainer.java:589) ... 11 更多
我的 solr.xml 看起来像这样:
<solr persistent="true">
<logging enabled="true">
<watcher size="100" threshold="INFO" />
</logging>
<cores adminPath="/admin/cores" defaultCoreName="${solr.default.core.name}" host="${host:}" hostPort="${jetty.port:}" hostContext="${hostContext:}" zkClientTimeout="${zkClientTimeout:15000}">
<core name="${solr.default.core.name}" instanceDir="${solr.default.core.directory}" />
</cores>
</solr>
我有一个 config.properties 文件(如教程中所述),如下所示:
#SOLR PROPERTIES
#Configures the directory used to store the data and configuration of the Solr default core
solr.default.core.directory=todo
#Configures the name of the Solr default core.
solr.default.core.name=todo
#SYSTEM PROPERTIES
#Configures the home directory of Solr
solr.solr.home=target/solr-home/
我怎样才能通过 Tomcat 轻松部署它?