Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 将Spring Boot 2.0与Tomcat 7.0.82配合使用_Spring Boot_Embedded Tomcat 7 - Fatal编程技术网

Spring boot 将Spring Boot 2.0与Tomcat 7.0.82配合使用

Spring boot 将Spring Boot 2.0与Tomcat 7.0.82配合使用,spring-boot,embedded-tomcat-7,Spring Boot,Embedded Tomcat 7,我有一个使用SpringBoot2.0.0.RC2的项目。我需要使用Tomcat 7.0.82的传统部署将其部署到客户环境。 我已经成功地构建了一个war,它可以通过为Spring应用程序(使用DispatcherServlet)配置web.xml来成功部署,而不是使用SpringBootServletilizer 我还希望有一种在本地环境中使用嵌入式Tomcat容器快速启动应用程序的方法,只需在带有@SpringBootApplication注释的应用程序类中运行main方法。如果我使用默认的

我有一个使用SpringBoot2.0.0.RC2的项目。我需要使用Tomcat 7.0.82的传统部署将其部署到客户环境。 我已经成功地构建了一个war,它可以通过为Spring应用程序(使用DispatcherServlet)配置
web.xml
来成功部署,而不是使用
SpringBootServletilizer

我还希望有一种在本地环境中使用嵌入式Tomcat容器快速启动应用程序的方法,只需在带有
@SpringBootApplication
注释的应用程序类中运行main方法。如果我使用默认的Tomcat版本(8.5.28),它可以正常工作。但是,我也希望在7.0.82版本中启动嵌入式容器。这对我来说很重要,还有另一个原因——我正在使用SpringBootTest,如果这些测试运行在与客户环境完全相同的容器上,那就太好了。不幸的是,我不能使用Spring Boot父POM和override
tomcat.version
属性

我已经尝试了
@springbootplication(exclude=ServletWebServerFactoryAutoConfiguration.class)
create
TomcatServletWebServerFactory
bean手动

@Bean
public ServletWebServerFactory tomcatServletWebServerFactory() {
    return new TomcatServletWebServerFactory();
}
并在
pom.xml
中显式添加tomcat 7.0.82依赖项(${tomcat.version}=7.0.82):


org.springframework.boot
弹簧启动机tomcat
假如
org.apache.tomcat
tomcat注释api
org.apache.tomcat.embed
tomcat嵌入式内核
org.apache.tomcat.embed
tomcat嵌入式el
org.apache.tomcat.embed
tomcat嵌入websocket
org.apache.tomcat
tomcat注释api
${tomcat.version}
org.apache.tomcat
tomcat util
${tomcat.version}
org.apache.tomcat.embed
tomcat嵌入式内核
${tomcat.version}
org.apache.tomcat.embed
tomcat嵌入式el
${tomcat.version}
org.apache.tomcat.embed
tomcat嵌入websocket
${tomcat.version}
但是我仍然得到一个
java.lang.NoClassDefFoundError:org/apache/tomcat/util/scan/StandardJarScanFilter
错误

您能告诉我是否有办法满足我的要求吗?

Spring boot 2: Tomcat的最低支持版本是8.5


参考:

将弹簧护套降级至1.5分支。SpringBoot2.0需要一个Servlet3.1容器。Tomcat 7是一个Servlet 3.0容器。如果可能的话,我希望避免使用它-我更愿意为Spring Boot 2.0找到一个解决方案,因为我希望支持JUnit5。Spring Boot 2需要Spring 5,它需要Servlet 3.1容器。您唯一的选择是降级,如果这仅适用于JUnit5,那么Spring4.3也支持JUnit5。看见或者升级到Tomcat 8.5(官方的3.1容器)。@M.Deinum-我将版本降级为1.5.10.RELEASE,现在我在7.0.82版本中有了嵌入式容器。但有趣的是,我研究了SpringBoot1.5.10.RELEASE在3.1.0版本中使用ServletAPI的依赖版本。你知道为什么它适用于1.5.10.RELEASE而不适用于2.0.0.RC2吗?因为它不是Servlet 3.0 API所需的最低版本。你能分享一下对官方文档的引用吗?这是GitHub上的官方Spring Boot发行说明:上面的链接不能被视为官方资源。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-annotations-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-el</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-websocket</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-annotations-api</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-util</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-el</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-websocket</artifactId>
    <version>${tomcat.version}</version>
</dependency>