2017-04-25 103 views
1

我遇到了构建可执行的弹簧引导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

如何解决这样的问题?

回答

3

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

  1. 对于Tomcat它应该工作,如果你使用战争的包装,即一个可执行的战争会工作,也将部署到一个标准集装箱 (不限,但包括Tomcat)的。由于Tomcat中的硬编码文件模式,可执行jar 将不起作用。
  2. 使用Jetty时,如果您使用战争包装,即可执行战争可行,并且也可以部署到任何标准 容器,它应该可以工作。

你可能想看看下面这个例子here

Reference

+0

虽然这种联系可以回答这个问题,最好是在这里有答案的主要部件,并提供链接参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/评论/低质量帖/ 15942646) – nvoigt

+0

编辑我的答案。 – Sajjad