可执行的Spring Boot jar无法解析视图

时间:2017-04-25 09:35:25

标签: java spring-boot

我在构建可执行的spring boot jar文件时遇到了问题。

配置:

@SpringBootApplication
public class RootConfig {

    public static void main(String[] args) {
        SpringApplication.run(RootConfig.class, args);
    }

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }
}

控制器:

@Controller
public class Index {

    @RequestMapping(value = "/")
    public String index() {
        return "index";
    }
}

POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupId</groupId>
    <artifactId>bootTest2</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <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>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <!--<scope>provided</scope>-->
        </dependency>
    </dependencies>

</project>

JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  Test page!
  </body>
</html>

结构:

structure

从理念开始:

idea

从命令行启动可执行jar:

enter image description here

如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

当运行使用嵌入式servlet容器的Spring Boot应用程序(并打包为可执行存档)时,JSP支持存在一些限制。

  
      
  1. 使用Tomcat它应该可以使用war包装,即可执行的战争可行,并且也可以部署到标准   容器(不限于,但包括Tomcat)。一个可执行的jar   因为Tomcat中的硬编码文件模式而无法工作。
  2.   
  3. 使用Jetty它应该可以使用战争包装,即可执行的战争将起作用,并且也可以部署到任何标准   容器
  4.   

您可能希望查看此示例here

Reference