使用jar文件运行时出现Spring Boot thymeleaferror

时间:2018-06-21 21:58:04

标签: spring spring-mvc spring-boot thymeleaf

这个问题曾经被问过,但是我没有解决我的问题,并且得到了一些奇怪的功能。

如果我将index.html文件放在资源下的模板目录中,如下所示:

├─ src
│   ├─ main
│   │  ├─ java
│   │  │   └ com
│   │  │       └ pic
│   │  │           └ name
│   │  │               ├ config
│   │  │               ├ controller
│   │  │               ├ domain
│   │  │               ├ dto
│   │  │               ├ error
│   │  │               ├ formatter
│   │  │               ├ repository
│   │  │               ├ service
│   │  │               └ utils
│   │  └ resources
│   │    ├ static
│   │    │   ├ css
│   │    │   ├ fonts
│   │    │   ├ images
│   │    │   └ js
│   │    └ templates
│   │      ├ index.html  
│   │      ├ admin
│   │      ├ error
│   │      └ fragments

这是pom文件:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
</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-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

<properties>
    <java.version>1.8</java.version>
</properties>


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

当我在想法上执行项目时,没有问题。但是当执行jar时,返回此错误: org.thymeleaf.exceptions.TemplateInputException:解决模板“ / index”时出错,模板可能不存在,或者任何已配置的模板解析器都无法访问该模板

1 个答案:

答案 0 :(得分:0)

问题出在访问视图时与前面的斜杠/有关。这就是为什么。

从IDE运行应用程序时,类和资源未打包为JAR。这意味着文件系统在加载和维护路径解析以及所有资源的填充方面完成了大部分工作。因此,名称为classpath*:/templates/index.htmlclasspath*:/templates//index.html的类路径资源是相同的。

但是,一旦将其打包为Spring Boot JAR文件,Spring Boot ClassLoader便有责任从压缩的JAR文件中加载类和资源。不幸的是,这个人没有将double slashes视为single slash

为避免此问题,请从视图名称中删除斜杠前缀。

还有一个bug entry反对spring-boot项目。