SrpingBoot 无法使用 Application 启动

初用 spring boot 的时候,碰到了一个问题具体如下:

启动 Application 类的后能访问到 Controller 却访问不到 jsp 错误页面下图(使用 spring-boot:run 的 maven 命令启动可以)。

然后查了下资料发现:

以 Application 方式启动,在 pom 中把 tomcat 的 scope 改为 compile(原来我的是 provided)

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

下面说一下主要造成原因,因为我们直接运行 application 类,而我们的 servlet-api 等依赖 tomcat 的库的 scope 为 provide,所以我们的

tomcat 的 scope 需要改为 compile 。

以 spring-boot:run 方式启动相当于直接部署工程到 tomcat 中,所以 tomcat 的 scope 为 provide 也不会影响。

maven 中三种 classpath
编译,测试,运行
1.compile:默认范围,编译测试运行都有效
2.provided:在编译和测试时有效
3.runtime:在测试和运行时有效
4.test: 只在测试时有效
5.system: 在编译和测试时有效,与本机系统关联,可移植性差