【问题标题】:Cannot start tomcat server when having "spring-boot-starter-test" dependency in classpath在类路径中具有“spring-boot-starter-test”依赖项时无法启动 tomcat 服务器
【发布时间】:2018-09-29 17:49:58
【问题描述】:

我的 Spring Boot Web 应用程序在启动时立即停止,没有任何错误消息:

:: Spring Boot ::        (v2.0.1.RELEASE)

2018-04-19 17:15:34.009  INFO 5600 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-04-19 17:15:34.013  INFO 5600 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.29
2018-04-19 17:15:34.027  INFO 5600 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/whf/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2018-04-19 17:15:34.129  INFO 5600 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-04-19 17:15:34.514  INFO 5600 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]

当我删除 spring-boot-starter-test 依赖项时,问题就消失了。这是我的pom.xml

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.hyperledger.fabric-sdk-java</groupId>
            <artifactId>fabric-sdk-java</artifactId>
            <version>1.1.0-alpha</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

        <!-- remove this dependency can fix this problem -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

我不知道这里发生了什么......

-----更新-----

将 spring boot 版本更改为 1.5.x 解决了这个问题。是不是spring boot 2.0.1的bug?

---------更新-------

似乎有些东西阻止了日志打印到控制台。

【问题讨论】:

  • 我遇到了完全相同的问题。我把它缩小了一点。它似乎与 spring-boot-starter-test 中的 spring-core 依赖关系有关。如果我使用以下内容,它也会让我解决问题: org.springframework.bootspring-boot-starter-testtestorg.springframeworkspring-core
  • @beldenge 尝试了您的解决方案,有效!你应该在这里发布这个作为答案。
  • @beldenge 知道这个问题的确切原因吗?
  • 不,我不确定确切的问题是什么,但我相信这是 Spring Boot 中的一个错误,它与依赖项在 spring-boot-starter-test pom 中的结构和/或范围有关。如果我能解决它,我计划为它提交一个 Jira。

标签: spring-boot spring-boot-starter


【解决方案1】:

按照建议,我将其发布为答案,尽管我认为它更像是一种解决方法。我遇到了完全相同的问题,并且能够进一步缩小范围。它似乎与 spring-boot-starter-test 中的 spring-core 依赖关系有关。如果我使用以下它也可以:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

【讨论】:

    【解决方案2】:

    我也遇到过类似的问题。就我而言,我从运行时排除了公共日志记录。我在 build.gradle 文件中添加了以下配置。

    configurations {
        runtime.exclude group: 'commons-logging', module: 'commons-logging'       
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 2016-06-21
      • 2021-05-25
      • 2016-06-29
      • 2017-08-28
      • 2021-04-29
      • 2019-10-11
      • 2021-11-06
      • 1970-01-01
      相关资源
      最近更新 更多