我必须使用JAR
在命令行上运行Spring Boot。我已经看过很多关于"胖JAR"的主题,我相信我已经创建过了。
该程序使用Spring Boot + Maven + Thymeleaf + Spring Security。
问题
templates
文件夹中的模板 - 即/resources/templates/<file>
已正确显示(我已index.html
,login.html
和underConstruction.html
已测试并正常工作)/resources/templates/client/edit.html
或/resources/templates/client/search.html
- 无法使用浏览器上显示的以下错误进行渲染出现意外错误(type = Internal Server Error,status = 500)。 解析模板&#34; / client / add&#34;时出错,模板可能不存在,或者任何已配置的模板解析器都无法访问
更改Spring Security配置以允许给定URL上的所有请求都不会更改任何内容,因此我认为它与之无关。
运行应用
./mvnw spring-boot:run
正常工作JAR
:java -jar myApp-0.0.1-SNAPSHOT0.jar
,但不会渲染上述页面构建JAR
./mvnw clean package
或./mvnw clean install
生成了2个JAR
个文件
myApp-0.0.1-SNAPSHOT.jar
,大小为42MB myApp-0.0.1-SNAPSHOT.jar.original
,大小为684K pom.xml文件 (只是显示生成&#34;胖JAR&#34的插件的小片段)
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
随机控制器 (只是想知道他们的代码是怎样的)
@Controller
public class ClientController {
@RequestMapping(path = "/client/search", method = RequestMethod.GET)
public String search(Model model) {
model.addAttribute("client", new Client());
model.addAttribute("clients", new ArrayList<Client>());
return "/client/search";
}
@RequestMapping(path = "/client/add", method = RequestMethod.GET)
public String edit(Model model) {
model.addAttribute("client", new Client());
return "/client/edit";
}
}
非常欢迎任何建议。
答案 0 :(得分:2)
您的问题很可能是如何返回模板名称:
@Controller
public class ClientController {
//and you could just make this simpler, like:
//@GetMapping("/search")
@RequestMapping(path = "/client/search", method = RequestMethod.GET)
public String search(Model model) {
model.addAttribute("client", new Client());
model.addAttribute("clients", new ArrayList<Client>());
return "client/search"; //NOTE: no slash
}
@RequestMapping(path = "/client/add", method = RequestMethod.GET)
public String edit(Model model) {
model.addAttribute("client", new Client());
return "client/edit"; //NOTE: no slash
}
}