2015-01-13 66 views
0

我已经配置了一个嵌入式的Solr服务器下面这个:https://stackoverflow.com/a/21848776/284236无法启动嵌入式Solr的服务器弹簧数据SOLR到1.3.1版

,这是完全与POM文件中的以下工作:

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-solr</artifactId> 
    <version>1.0.0.RC1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-core</artifactId> 
    <version>4.1.0</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>slf4j-jdk14</artifactId> 
      <groupId>org.slf4j</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

我把它改为:

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-solr</artifactId> 
    <version>1.3.1.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-core</artifactId> 
    <version>4.10.3</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>slf4j-jdk14</artifactId> 
      <groupId>org.slf4j</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

当我开始我的Tomcat服务器,我得到:

SEVERE: A child container failed during start 

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] 
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:111) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:785) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    ... 7 more 

Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer 
    at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1657) 
    at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1565) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1273) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 7 more 

Jan 13, 2015 9:51:38 PM org.apache.catalina.core.ContainerBase startInternal 
SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]] 
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) 
...... 

堆栈跟踪中没有任何东西可以让我理解它失败的原因。

回答

0

这是不同SOLR版本之间的冲突。

org.springframework.data具有solr-core作为依赖。请参阅maven-repository

它只是发生在org.springframework.data 1.0.0.RC1使用SOLR 4.1.0,你在旧的例子中引用。

Spring 1.3.1引用Solr 4.7.2。看到这里是maven-repository

所以你可以从pom中删除solr依赖,或者切换到solr 4.7.2版本。

+0

关于solr版本冲突是正确的,它显示在依赖关系层次结构中。我切换到4.7.2,但它不能解决问题。 – Jayz

+0

您是否试图一并删除SOLR-Core依赖项?此'ClassCastException:org.springframework.web.SpringServletContainerInitializer ...'指示某种版本冲突。例如相同的依赖项添加两次左右。 – jHilscher

+1

我能够通过从solr-core中排除servlet依赖关系来克服它。感谢您指点我正确的方向。 – Jayz