为什么这个jar包装不适用于Spring Boot?

时间:2017-05-02 16:50:03

标签: spring spring-boot executable-jar

我正在尝试将Spring Boot的包装理解为" fat"罐子。从我所知道的"胖" jar有自己的特殊类,在jar运行时加载主类,并相应地设置类路径。

我无法理解的是,当我使用Eclipse将所有依赖项提取到jar中的文件夹结构中时,jar不再作为正确的Spring Boot应用程序运行。

要重复我在这里所做的事情,只需使用一个简单的Spring Boot应用程序,然后从Eclipse中选择以下内容 - :

导出 - > Runnable Jar - >选择主类 - >将所需的库提取到jar中。

只需从命令行运行jar,就像任何jar一样。 Spring Boot最初启动但失败并显示以下消息 -

  

2017-05-02 22:06:40.484 WARN 3468 --- [主要]   ationConfigEmbeddedWebA pplicationContext:遇到异常   在上下文初始化期间 - 取消刷新尝试:   org.springframework.beans.factory.BeanDefinitionStoreExcep tion:   无法处理配置类的导入候选项   [com.main.Test Main];嵌套异常是   java.lang.IllegalArgumentException:没有自动配置类   发现于META-INF / spring.factories。如果您使用自定义packa   ging,确保文件正确无误。

我可以以某种方式编辑spring.factories文件以包含我的课程吗?

我只是想了解Spring如何通过Maven插件实际打包文件。

1 个答案:

答案 0 :(得分:2)

我认为因为它是一个Spring Boot应用程序,所以你需要使用他们的插件进行构建。这是因为,spring Boot有自己的jar加载机制(Spring Boot 1.4中的BOOT-INF介绍)。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

来自文档:

  

Spring Boot Maven插件在Maven中提供Spring Boot支持,允许您打包可执行jar或war档案并“就地”运行应用程序。

链接到documetantion (Appendix E) 关于spring.factories和查找自动配置候选人的内容 - Auto-configuration