【发布时间】:2016-07-01 05:38:21
【问题描述】:
我在 src/main/resources/template 下构建了一个带有单个 home.html 文件的 spring-boot webapp,当我从我的 spring 控制器返回“home”时,它运行良好。我将它打包成一场战争,它与 spring-boot 的嵌入式 tomcat 服务器运行得非常好。如果我用mvn spring-boot:run 运行它,那就是。
但是后来如果我用java -jar myjar.war 启动我的应用程序,它声称服务器已经启动并且一切正常,但是当我尝试在 localhost:8080 访问它时它失败了:
Error resolving template "home", template might not exist or might not be accessible by any of the configured Template Resolvers
那我接下来该怎么办?
这是我的 pom.xml,顺便说一句:
<groupId>com.ciber</groupId>
<artifactId>energyworx-conversion-tool</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
<properties>
<java.version>1.7</java.version>
<start-class>com.ciber.ewct.WebApp</start-class>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</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>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<!-- <jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000</jvmArguments> -->
</configuration>
</plugin>
</plugins>
</build>
打开调试日志记录级别后,我看到了有关 thymeleaf 配置的信息,当我使用 mvn spring-boot:run 和 java -jar 运行它时也是如此:
[THYMELEAF] * Cache Factory implementation: org.thymeleaf.cache.StandardCacheManager
[THYMELEAF] * Template modes:
[THYMELEAF] * LEGACYHTML5
[THYMELEAF] * XHTML
[THYMELEAF] * HTML5
[THYMELEAF] * VALIDXML
[THYMELEAF] * VALIDXHTML
[THYMELEAF] * XML
[THYMELEAF] * Template resolvers (in order):
[THYMELEAF] * org.thymeleaf.templateresolver.TemplateResolver
[THYMELEAF] * Message resolvers (in order):
[THYMELEAF] * org.thymeleaf.spring4.messageresolver.SpringMessageResolver
[THYMELEAF] * Dialect [1 of 2]: org.thymeleaf.spring4.dialect.SpringStandardDialect
[THYMELEAF] * Prefix: "th"
[THYMELEAF] * Dialect [2 of 2]: nz.net.ultraq.thymeleaf.LayoutDialect
[THYMELEAF] * Prefix: "layout"
[THYMELEAF] TEMPLATE ENGINE CONFIGURED OK
【问题讨论】:
-
您是如何配置 Thymeleaf 解析器的?使用 spring-boot-starter-thymeleaf ?
-
我没有配置。我只将依赖项添加到我的 pom 中:
org.springframework.boot spring-boot-starter-thymeleaf -
尝试打开打包的war文件并检查模板/home.html是否存在于存档中。您提到您正在打包为战争文件,但我在您的 pom 中没有看到任何关于此打包的说明。默认情况下,你应该有一个罐子,而不是一个战争。会不会是您正在尝试执行旧工件?
-
它被打包为战争,我已经编辑了问题以包含 pom.xml 的那部分。
-
我可以在目标文件夹中看到war文件。这不是旧的。当我运行 mvn clean package 时会生成一个新的。
标签: maven spring-mvc spring-boot thymeleaf