SpringBoot不会作为WAR在tomcat上启动

时间:2018-07-02 11:56:29

标签: java maven spring-boot tomcat

此问题被标记为重复,其他问题1 2 3 4我不认为这是下一个原因的重复。

  1. 应用程序类(已在问题中发布),其配置为in the spring docs,因此它既不是this也不是thisthis的重复,它还显示他们在pom中包含一个标签来指示其主类,我也尝试过,它不起作用,此外,在this之类的一些指南中,他们说将其注释为插件的一部分以便进行扫描正确地放在WAR文件中,它具有相同的效果。
  2. Application类是否具有适当的批注,并且位于基本包中,因此SpringBoot可以扫描整个类,因此它不是this的重复项,您可以看到它们在注释应用程序时使用了几种不同的注释注释,您可以在我的问题中看到我仅使用@SpringBootApplication注释了该类,因为它包含所有其他注释as shown in the docs

我是春季新人,所以也许我的问题有点愚蠢。

因此,我尝试使用this guide创建一个多模块springBoot项目 似乎工作正常,但我想更进一步,我想使用传统的部署,即使用Tomcat 9,因此我遵循了the next guide。这是问题出现的时候, Tomcat似乎可以部署生成的WAR文件,但是没有显示SpringBoot标语,并且即使Tomcat显示它找到了Spring WebApplicationInitializers,也无法访问项目URL。 WAR文件似乎格式正确,并且在预期路径内有Application类

我尝试了发现的所有内容,似乎有些人在使用一个Java版本编译项目并尝试将其部署到与我的情况不相同的Java版本的环境中遇到同样的麻烦。 / p>

我可以找到很多有关在Tomcat中将springBoot应用程序部署为WAR的信息,但是对于我所描述的问题却几乎没有。

使用Java 1.8 蚀氧 雄猫9 Maven 3.3.9

所以我的项目结构是这样的:

  • mail-ma-reactor <-应该编译所有内容
    • mail-ma-library <-包含指南中所示的所有springboot依赖项
    • mail-ma-api <-包含Application类和REST端点
    • mail-ma-war <-应该将项目编译为WAR文件,并且确实如此

我的反应堆pom很简单:

<groupId>com.xxxxx.xxxx.mail.ma</groupId>
<artifactId>mail-ma-reactor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<!--MODULES -->
<modules>
    <module>library</module>
    <module>application</module>
    <module>mail-ma-war</module>
</modules>
</project>

我的库POM正常工作,但以防万一,这是

<groupId>com.xxxxxx.xxxxxx.mail.ma.library</groupId>
<artifactId>mail-ma-library</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
</properties>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

</project>

应用pom:

<groupId>com.xxxxxxx.xxxxxx.mail.ma</groupId>
<artifactId>mail-ma-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.xxxxxx.xxxx.mail.ma.library</groupId>
        <artifactId>mail-ma-library</artifactId>
        <version>${project.version}</version>
    </dependency>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    </project>
</dependencies>

引发所有麻烦的是战争pom:

<modelVersion>4.0.0</modelVersion>
<groupId>com.xxxxxx.xxxxxx.mail.ma</groupId>
<artifactId>mail-ma-war</artifactId>
<packaging>war</packaging>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
</properties>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<dependencies>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.xxxxx.xxxxx.mail.ma</groupId>
        <artifactId>mail-ma-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

</dependencies>

<build>
    <pluginManagement>
        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                <mainClass>com.xxxxxx.xxxxxx.mail.ma.Application</mainClass>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <source>1.8</source>
                    <target>1.8</target>
                    </configuration>
            </plugin>

        </plugins>
    </pluginManagement>
</build>

</project>

Tomcat仅显示:

INFORMACIÓN: 1 Spring WebApplicationInitializers detected on classpath
jul 02, 2018 9:57:31 AM org.apache.coyote.AbstractProtocol start

INFORMACIÓN: Starting ProtocolHandler ["http-nio-8080"]
jul 02, 2018 9:57:31 AM org.apache.coyote.AbstractProtocol start

INFORMACIÓN: Starting ProtocolHandler ["ajp-nio-8009"]
jul 02, 2018 9:57:31 AM org.apache.catalina.startup.Catalina start

INFORMACIÓN: Server startup in 3515 ms

没什么..没有错误的日志,什么也没有,并且springBoot横幅没有显示,URL不可访问,显示404

我的应用程序类按springboot指南的说明进行注释(位于API项目内部)

@SpringBootApplication public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
    return builder.sources(Application.class);
}
public static void main(final String[] args) {
    SpringApplication.run(Application.class, args);
}

请明确一点,出于结构上的原因,我出于变更的原因需要与一个多模块项目一起工作,而且至少现在必须要有WAR文件,要更改它已是我的手。

为了清楚地说明这个问题,我用XXXX更改了项目名称,显然我的项目中没有这样的名称。另外,我几乎尝试了所有我能找到的一切,我只是出于绝望而问,任何帮助将不胜感激。

我知道我的poms可以被清理,如果我使它工作,它们也会被清理(这只是一个多模块结构的POC),因为我一直在尽我所能来做,所以它们有点脏。工作。另外,我制作了一个没有多模块结构的项目,打包为WAR文件,并且部署完美,所以我想这不是Tomcat问题吗?

通过此pom结构生成的WAR文件包含所有依赖关系,并且在API jar中可以找到API jar。

感谢您的帮助,请随时向我询问!

0 个答案:

没有答案