java - 将 spring-data-solr 升级到版本 1.3.1 时无法启动嵌入式 solr 服务器

标签 java spring tomcat solr lucene

我已经按照以下配置了一个嵌入式 solr 服务器:https://stackoverflow.com/a/21848776/284236

它与 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)
......

堆栈跟踪中没有任何内容让我理解失败的原因。

最佳答案

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

org.springframework.datasolr-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。

关于java - 将 spring-data-solr 升级到版本 1.3.1 时无法启动嵌入式 solr 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27926957/

相关文章:

spring - 在 1and1 云服务器上部署 gradle spring 应用程序

windows - Apache 服务器的端口 80 正在被 PID 4(系统)使用,无法停止

java - 如何在tomcat中设置log4j2文件夹?

java - 从 Socket 读取行并将每行放入 BlockingQueue

java - 如何覆盖策略 GenerationType.TABLE 的 Hibernate Id 生成

java - Java中的逆变和继承有什么区别?

java - Hibernate EntityManager,它应该用作单例吗?

java - 从 Netbeans 启动 Tomcat 失败

tomcat - 如何在 tomcat 中为 war 文件中的静态文件启用 http 压缩?

java,从多个图像合成图像