【问题标题】:SpringBoot - making jar files - No auto configuration classes found in META-INF/spring.factoriesSpringBoot - 制作 jar 文件 - 在 META-INF/spring.factories 中找不到自动配置类
【发布时间】:2016-12-12 00:49:26
【问题描述】:

使用IntelliJ 启动我的应用程序时一切正常。但是当我做了一个胖罐子并用

执行它时
java -jar myapp.jar

我知道了:

16:37:44.194 [main] ERROR org.springframework.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [pl.mypackage.Main]; nested exception is java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:489)
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:191)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:321)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174)
        at pl.mypackage.Main.main(Main.java:39)
Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
        at org.springframework.util.Assert.notEmpty(Assert.java:276)
        at org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector.getCandidateConfigurations(EnableAutoConfigurationImportSelector.java:145)
        at org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector.selectImports(EnableAutoConfigurationImportSelector.java:84)
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:481)
        ... 14 common frames omitted
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [pl.mypackage.Main]; nested exception is java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:489)
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:191)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:321)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174)
        at pl.mypackage.Main.main(Main.java:39)
Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
        at org.springframework.util.Assert.notEmpty(Assert.java:276)
        at org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector.getCandidateConfigurations(EnableAutoConfigurationImportSelector.java:145)
        at org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector.selectImports(EnableAutoConfigurationImportSelector.java:84)
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:481)
        ... 14 more

META-INF/spring.factories 中似乎没有找到自动配置类。如何添加,这个文件的内容应该是什么?

【问题讨论】:

  • 你的肥罐是怎么做的?
  • 我遇到了同样的问题,因为我从我的 pom.xml 中删除了 spring-boot-starter-parent,并且像以前一样使用程序集插件制作 jar。过失。使用spring-boot-starter-parent 就像一个魅力,可以自动找到正确的主类。

标签: java spring intellij-idea spring-boot


【解决方案1】:

我遇到了同样的问题,刚刚解决了。

起初,我使用maven-assembly-plugin 生成胖jar,它创建了一个名为mavenproject1-0.0.1-SNAPSHOT-jar-with-dependencies.jar 的文件。当我尝试运行该文件时,该文件出现了与您提到的相同的问题。

我认为因为它是一个 Spring Boot 应用程序,你需要使用他们的插件。我将包装更改为spring-boot-maven-plugin,它会生成两个文件:mavenproject1-0.0.1-SNAPSHOT.jarmavenproject1-0.0.1-SNAPSHOT.jar.original。试试java -jar target/mavenproject1-0.0.1-SNAPSHOT.jar,希望它会起作用。 :-)

供参考,这是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company</groupId>
    <artifactId>mavenproject1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.company.common</groupId>
            <artifactId>common-files</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies> 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <mainClass>${start-class}</mainClass>
                </configuration>
                  <executions>
                    <execution>
                      <goals>
                        <goal>repackage</goal>
                      </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
              <artifactId>maven-assembly-plugin</artifactId>
              <version>2.2-beta-5</version>
              <configuration>
                <archive>
                  <manifest>
                    <addClasspath>true</addClasspath>
                    <mainClass>com.company.mavenproject1.MainClass</mainClass>
                  </manifest>
                </archive>
                <descriptorRefs>
                  <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
              </configuration>
              <executions>
                <execution>
                  <id>assemble-all</id>
                  <phase>package</phase>
                  <goals>
                    <goal>single</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
        </plugins>
    </build>
</project>

【讨论】:

  • 值得注意的是,pom.xml中的jar是必须的。没有它,您仍然可以在 IDE 中运行应用程序,但 .jar 将无法工作。
  • 进行这些更改后,您使用的构建命令是什么? mvn 全新安装? mvn 包?还是别的什么?
  • 如果我不能使用spring-boot-starter-parent 作为父母怎么办?
  • @Benoit Larochelle 只是我,还是您需要定义 start-class 属性才能完成这项工作?
  • 在这里使用的构建命令:mvn clean package spring-boot:repackage
【解决方案2】:

这是解决方案:

  1. 只在 POM.xml 中添加插件

    <build>
    <plugins>
       <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <mainClass>${start-class}</mainClass>
            </configuration>
              <executions>
                <execution>
                  <goals>
                    <goal>repackage</goal>
                  </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    

  2. pom.xml 中的一个属性

    <properties>
      <start-class>com.xxx.yyy.MainClass</start-class>
    </properties>
    
  3. 运行命令

    mvn clean package spring-boot:repackage
    
  4. 现在运行在目标文件夹中创建的 jar(它现在包括所有依赖项)

    java -jar my-service-0.0.1-SNAPSHOT.jar
    

【讨论】:

    【解决方案3】:

    或者,如果您由于某种原因无法使用 Spring Boot 插件,您可以在您的应用程序中包含以下文件。应该叫src/main/resources/META-INF/spring.factories:

    https://github.com/spring-projects/spring-boot/blob/1.5.x/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories

    这适用于 spring boot 1.x,如果您想在 REPL 中使用 spring 管理的 bean,这将很有帮助。

    【讨论】:

    • 文件不存在了。
    • @peterh 是什么版本的?它从 1.5.4 开始存在。
    • 谢谢@peterh。看起来他们从 Spring Boot 2 中删除了该文件,我已经更新了答案以反映这一点。
    • 我们如何添加它?
    【解决方案4】:

    此配置对我有用。我将我的 JAR 作为服务执行,但行是:

    javaw -jar MY_JAR.jar
    

    POM

    <properties>
            <!-- Spring boot main class -->
            <start-class>com.PATH_TO_MAIN.Main</start-class>
    </properties>
    ...
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    

    使用 Spring Boot,不再需要使用程序集插件。不要忘记调用 package 目标。

    这里是documentation example

    【讨论】:

    • 如果 spring 应用程序只是另一个独立 jar 中的另一个依赖项,这似乎不起作用。
    【解决方案5】:

    我已经在我的 pom 中添加了这个配置并且问题得到了解决:

    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.5.2.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    </build>
    

    【讨论】:

      【解决方案6】:

      对于我们这些刚接触 IntelliJ、Spring 和 Maven 的人:

      如果您想在 IntelliJ 中构建 jar,您可能正在使用 IntelliJ 的构建系统:构建、构建工件等。但是,这不是 Maven。您需要的是 Maven - 而不是 IntelliJ - 为您构建它。为此,您需要在 IntelliJ 中调出 Maven 面板(在 View => Tool Windows => Maven 下方),然后双击“package”。瞧!

      【讨论】:

      • 就我而言,这就是答案。
      • 这也适用于我。换句话说,你想用 Maven 构建 jar,而不是 Intellij。只需在项目目录中使用 maven 命令 mvn package 构建 jar 即可获得相同的结果。
      【解决方案7】:
      Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
      

      从上面看来,您的包装没有正确完成。我知道我迟到了,但这可能对其他人有帮助。

      解决方案

      请检查您的@SpringBootApplication 类是否应具有高于其他类的基础包。例如,让你的类 @SpringBootApplication 位于包 com.sb.foo 中,那么所有其他 spring 原型类都应该放在 com.sb.foo.xxx 中,其中 xxx 可以是任何东西。可以进一步分包com.sb.foo.xxx.yyy。这是 SpringBoot 启用自动配置的功能。即使您犯了错误,此自动配置也适用于 IntellijEclipse 等 IDE。

      如果您不使用任何构建工具或推荐的 IDE(如 STS eclipse)进行开发,则面临此类问题的可能性会更大。

      【讨论】:

        【解决方案8】:

        您可以将 spring.factories 文件添加到您的 META-INF 文件夹中。 Spring 2.0.4 版的 spring.factories 文件位于:https://github.com/spring-projects/spring-boot/blob/v2.0.4.RELEASE/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories

        【讨论】:

        • 尝试添加 spring.factories 文件,但生成的 jar 文件中没有包含它,我可能错过了什么吗?
        【解决方案9】:

        spring.factories 由 spring-boot-autoconfigure 中的 AutoConfigurationImportSelector 类加载。这将遍历 META-INF/spring.factories 类型的所有资源的上下文类加载器。

        为了在对 jar 进行着色后让 spring boot 工作,我通过将所有可用 spring.factories 文件的内容合并到我自己的 jar 的 META-INF 文件夹中的单个 spring.factories 文件中来模拟相同的。

        这是我当前的 spring.factories 文件:

        # Initializers
        org.springframework.context.ApplicationContextInitializer=\
        org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\
        org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer
        
        # Application Listeners
        org.springframework.context.ApplicationListener=\
        org.springframework.boot.autoconfigure.BackgroundPreinitializer
        
        # Auto Configuration Import Listeners
        org.springframework.boot.autoconfigure.AutoConfigurationImportListener=\
        org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener
        
        # Auto Configuration Import Filters
        org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
        org.springframework.boot.autoconfigure.condition.OnClassCondition
        
        # Auto Configure
        org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
        org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
        org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
        org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
        org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
        org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
        org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
        org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration,\
        org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
        org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
        org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
        org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
        org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.ldap.LdapDataAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\
        org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration,\
        org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration,\
        org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\
        org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\
        org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration,\
        org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\
        org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration,\
        org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration,\
        org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration,\
        org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\
        org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\
        org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
        org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
        org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\
        org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\
        org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\
        org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\
        org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
        org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration,\
        org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration,\
        org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration,\
        org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
        org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\
        org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration,\
        org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\
        org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration,\
        org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration,\
        org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration,\
        org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
        org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\
        org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\
        org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\
        org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration,\
        org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration,\
        org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,\
        org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
        org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\
        org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\
        org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\
        org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\
        org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration,\
        org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration,\
        org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration,\
        org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,\
        org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,\
        org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration,\
        org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration,\
        org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration,\
        org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration,\
        org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\
        org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\
        org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\
        org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\
        org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\
        org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\
        org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\
        org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\
        org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration
        
        # Failure analyzers
        org.springframework.boot.diagnostics.FailureAnalyzer=\
        org.springframework.boot.autoconfigure.diagnostics.analyzer.NoSuchBeanDefinitionFailureAnalyzer,\
        org.springframework.boot.autoconfigure.jdbc.DataSourceBeanCreationFailureAnalyzer,\
        org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer
        
        # Template availability providers
        org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider=\
        org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailabilityProvider,\
        org.springframework.boot.autoconfigure.mustache.MustacheTemplateAvailabilityProvider,\
        org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAvailabilityProvider,\
        org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider,\
        org.springframework.boot.autoconfigure.web.JspTemplateAvailabilityProvider
        

        【讨论】:

          【解决方案10】:

          我遇到了同样的问题:

          IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories.
          

          使用 Java 9、spring boot 2.0.0、springboot-javafx-support 2.1.6。 我在同一个项目上尝试了 maven 和 gradle 4。

          对我来说,解决方法是用 java 8 打包 jar。

          【讨论】:

          • 我只使用 java 8 仍然会出现此错误。如果您对此有一些更新,请告诉我。
          • 抱歉 Raj,最近没有接触 Java,所以我没有任何更新。
          【解决方案11】:

          这是因为需要在主类中注释代码,我的情况

          【讨论】:

            【解决方案12】:

            以下 POM 对我有用,这将允许您拥有包含所有依赖项的组装包。

            在你的 POM 开头添加这个

            <modelVersion>4.0.0</modelVersion>
            <groupId>com.xyz.test</groupId>
            <artifactId>test</artifactId>
            <version>1.0-SNAPSHOT</version>
            <packaging>jar</packaging>
            <name>test</name>
            <parent>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.5.3</version>
            </parent>
            

            添加这个插件

                       <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <configuration>
                            <fork>true</fork>
                            <mainClass>com.xyz.test</mainClass>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>repackage</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
            

            运行命令

            1. 检查运行 - mvn spring-boot:run
            2. 制作肥罐 - mvn clean package
            3. 运行 jar - java -jar /target/jar-file-name.jar

            【讨论】:

              【解决方案13】:

              这个错误是因为你是通过eclipse导出jar的。 解决方法:在mvn clean install之后,只需要使用目标文件夹中生成的jar即可

              【讨论】:

              • 我没有从 Eclipse 导出任何东西,只使用命令行 mvn 并且仍然得到这个错误。此外,仅仅为了构建某些东西而使用mvn clean install 也是一种不好的做法,尤其是对于快照版本,因为您会遇到很多关于库获取旧版本的问题。该命令用于将某些内容安装到本地存储库中;如果您只是从目标文件夹中获取它,那么我不知道您为什么需要安装它。
              • 我们不要不阅读就回答问题。这与 Eclipse 无关。
              【解决方案14】:

              或者,使用eclipse IDE运行create jar file

              1. 右击您的项目。

              2.set 目标是“干净的包装”。

              1. 等一下,看看你的 paht .jar

              【讨论】:

              • 我认为大多数人都试图从命令行执行此操作,而不使用 Eclipse。例如,作为技术说明与可能安装或未安装 Eclipse 的人分享。
              【解决方案15】:

              或者,您可以使用它;

              click -> run as maven clean
                    -> run as maven install 
              
              and your jar in /yourProjectFolder/target/yourProjectName-0.0.1-SNAPSHOT.jar 
              
              java -jar yourProjectName-0.0.1-SNAPSHOT.jar 
              

              【讨论】:

              • 这是关于命令行(终端)的,所以不确定你在哪里点击……
              猜你喜欢
              • 2020-11-26
              • 2018-04-14
              • 2020-08-19
              • 2018-08-27
              • 1970-01-01
              • 2018-09-17
              • 1970-01-01
              • 2017-09-21
              • 2019-08-09
              相关资源
              最近更新 更多