![](/img/trans.png)
[英]Tomcat Doesn't Come Up When Running Spring Boot Application Through the Jar (missing ServletWebServerFactory bean)
[英]Spring Boot - custom error page doesn't show up when the app is started in a standalone way (java -jar)
我有一个带有自定义错误页面的Spring Boot应用程序-由实现ErrorController
的简单Controller处理:
@Controller
public class CustomErrorController implements ErrorController {
private static final String PATH = "/error";
@RequestMapping(value = PATH)
public ModelAndView error() {
return new ModelAndView("error");
}
@Override
public String getErrorPath() {
return PATH;
}
}
当在Eclipse中启动应用程序的主类时,此方法运行良好。 但是,当我通过执行mvn clean install
将应用程序打包到胖罐中,然后通过调用java -jar myapp.jar
启动它时,自定义错误页面不会出现-我只看到标准的Whitelabel错误页面。
我找到了解决方案,尽管我仍然不知道为什么从Eclipse运行Main类和使用fat jar和java -jar
命令运行应用程序之间的初始代码行为有所不同。
到目前为止:我在日志中发现SpringBoot找到我的CustomErrorController
作为/error
路径的处理程序。 但是,在下一步中,他调用了org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration
类中定义的视图。 解决方案只是将视图名称更改,例如从error
更改为errorPage
:
@Controller
public class CustomErrorController implements ErrorController {
private static final String PATH = "/error";
@RequestMapping(value = PATH, produces = "text/html")
public ModelAndView error() {
return new ModelAndView("errorPage");
}
@Override
public String getErrorPath() {
return PATH;
}
}
不知何故, ErrorMvcAutoConfiguration
的视图将覆盖具有相同名称的自定义创建的视图。 第二个问题是-为什么在Eclipse中启动应用程序时为什么看不到这种现象?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.