在eclipse上工作正常,但如果以jar形式运行,则“找不到模板”

时间:2018-09-21 01:58:25

标签: java maven spring-boot thymeleaf

该程序在带有IDE的Windows中可以正常运行,但是当我释放到jar中并在Ubuntu下运行它时,它将无法呈现HTML。

Src:

@Controller
@EnableAutoConfiguration
@RequestMapping("/")
public class JumanController {

    @GetMapping("/")
    public String index(Model model) {
        return "index";
    }

...

主要:

@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
        TomcatURLStreamHandlerFactory.disable();
        SpringApplication.run(JumanController.class, args);
    }
}

HTML:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
...

pom.xml:

<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>

    ...

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.0.5.RELEASE</version>
        </dependency>
    </dependencies>

</project>

设置:

spring.thymeleaf.enabled=true 
spring.thymeleaf.prefix=classpath:/resources/templates/ 

我试图将prefix更改为classpath:/templates/,但仍然无法正常工作。

服务器启动时的警告:

  

2018-09-21 10:46:47.154 WARN 4048 --- [主要]   ion $ DefaultTemplateResolverConfiguration:找不到模板   位置:classpath:/ templates /(请添加一些模板或检查   您的Thymeleaf配置)

访问索引时出错:

  

2018-09-21 10:47:15.253错误4048 --- [nio-8080-exec-1]   org.thymeleaf.TemplateEngine:   [THYMELEAF] [http-nio-8080-exec-1]异常处理模板   “ index”:解析模板“ index”时出错,模板可能不存在或   可能无法由任何已配置的模板解析器访问

     

org.thymeleaf.exceptions.TemplateInputException:解决错误   模板“索引”,模板可能不存在或无法访问   通过任何已配置的模板解析器

模板目录:

src/main/resources/templates/index.html

为什么要寻找路径src/main/templates/而不是src/main/resources/templates/

我只需要一个简单的Spring boot即可包含一个statictemplate页面,并且可以释放到jar中。我删除了application.properties,希望使所有内容都默认运行(自动配置),但结果是相同的。

任何建议或世界演示项目都将有所帮助...

2 个答案:

答案 0 :(得分:0)

已解决:

  1. 将模板目录从src/main/resources/templates/更改为/resources/templates/。 (与src处于同一级别)

  2. spring.thymeleaf.prefix设置为classpath:/templates/

源代码:https://github.com/arkceajin/jumanpp-java

答案 1 :(得分:0)

确保您的application.properties文件具有以下条目- spring.thymeleaf.prefix = classpath:/ templates /