无法使用JAR

时间:2018-02-24 13:11:18

标签: maven spring-boot command-line jar thymeleaf

我必须使用JAR在命令行上运行Spring Boot。我已经看过很多关于"胖JAR"的主题,我相信我已经创建过了。

该程序使用Spring Boot + Maven + Thymeleaf + Spring Security。

问题

  • templates文件夹中的模板 - 即/resources/templates/<file>已正确显示(我已index.htmllogin.htmlunderConstruction.html已测试并正常工作)
  • 子文件夹中的模板 - 即/resources/templates/client/edit.html/resources/templates/client/search.html - 无法使用浏览器上显示的以下错误进行渲染
  

出现意外错误(type = Internal Server Error,status = 500)。   解析模板&#34; / client / add&#34;时出错,模板可能不存在,或者任何已配置的模板解析器都无法访问

更改Spring Security配置以允许给定URL上的所有请求都不会更改任何内容,因此我认为它与之无关。

运行应用

  1. 使用Maven:./mvnw spring-boot:run正常工作
  2. 正确使用JARjava -jar myApp-0.0.1-SNAPSHOT0.jar,但不会渲染上述页面
  3. 构建JAR

    • 已执行./mvnw clean package./mvnw clean install

    生成了2个JAR个文件

    1. myApp-0.0.1-SNAPSHOT.jar,大小为42MB
    2. myApp-0.0.1-SNAPSHOT.jar.original,大小为684K
    3. 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";
          }
      }
      

      非常欢迎任何建议。

1 个答案:

答案 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
    }
}