java - স্প্রিংবুট-জার ফাইল তৈরি করা-মেটা-আইএনএফ/স্প্রিং.ফ্যাক্টরিগুলিতে কোনও অটো কনফিগারেশন ক্লাস পাওয়া যায় নি




spring intellij-idea (8)

IntelliJ ব্যবহার করে আমার অ্যাপ্লিকেশন শুরু করার সময় সবকিছু 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 অটো কনফিগারেশন ক্লাসে খুঁজে পায় নি। এটি কীভাবে যুক্ত করবেন এবং এই ফাইলটির বিষয়বস্তুটি কী হওয়া উচিত?


আপনি আপনার মেটা-আইএনএফ ফোল্ডারে স্প্রিং.ফ্যাক্টরিজ ফাইলটি যুক্ত করতে পারেন। বসন্ত সংস্করণ ২.০.৪ এর জন্য স্প্রিং.ফ্যাক্টরিগুলি ফাইলটি এখানে অবস্থিত: 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


আমার একই সমস্যা ছিল এবং কেবল এটি সমাধান করা হয়েছে।

প্রথমে, আমি mavenproject1-0.0.1-SNAPSHOT-jar-with-dependencies.jar maven-assembly-plugin দিয়ে ফ্যাট জার তৈরি mavenproject1-0.0.1-SNAPSHOT-jar-with-dependencies.jar , যা mavenproject1-0.0.1-SNAPSHOT-jar-with-dependencies.jar নামে একটি ফাইল তৈরি mavenproject1-0.0.1-SNAPSHOT-jar-with-dependencies.jar । আমি যখন এটি চালানোর চেষ্টা করেছি তখন আপনি উল্লিখিত সমস্যাটি এই ফাইলটি দিয়েছে।

আমি মনে করি এটি একটি স্প্রিং বুট অ্যাপ্লিকেশন, তাই আপনাকে তাদের প্লাগ-ইন ব্যবহার করা দরকার। আমি আমার প্যাকেজিংটিকে spring-boot-maven-plugin পরিবর্তন করেছি এবং এটি দুটি ফাইল তৈরি করে: mavenproject1-0.0.1-SNAPSHOT.jar এবং mavenproject1-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>

আমি একই সমস্যার মুখোমুখি হয়েছি:

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

জাভা 9, স্প্রিং বুট 2.0.0, স্প্রিংবুট-জাভাফ্যাক্স-সমর্থন 2.1.6 সহ। আমি একই প্রকল্পে মেভেন এবং গ্রেড 4 উভয়ই চেষ্টা করেছি।

আমার জন্য ফিক্সটি জাভা 8 দিয়ে পাত্রে প্যাকেজিং করছিল।


এই কনফিগারেশনটি আমার পক্ষে কাজ করে। আমি পরিষেবা হিসাবে আমার জেআর কার্যকর করি তবে লাইনটি হ'ল:

javaw -jar MY_JAR.jar

পম :

<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>

স্প্রিং বুট সহ, এসেম্বলি-প্লাগইন ব্যবহার করার দরকার নেই। প্যাকেজ লক্ষ্য কল করতে ভুলবেন না।

এখানে ডকুমেন্টেশন উদাহরণ


একই সমস্যার সাথে মিলিত হয়েছে এবং সাফল্য ছাড়াই উপরের সমস্ত পদ্ধতিগুলি চেষ্টা করে, তারপরে চাইনিজ কোডিং ওয়েবসাইট থেকে শিখেছি এবং এটি আমার সমস্যার সমাধান করেছে:

মাভেন টুল উইন্ডোতে নিম্নোক্ত কমান্ডটি চালান মাভেন প্রজেক্টস-> ম্যাভেন গোলটি কার্যকর করুন

package -Dmaven.test.skip=true

আমার ত্রুটির বার্তা:

14:51:59.505 [main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Could not find key 'spring.boot.enableautoconfiguration' in any propert
y source
14:51:59.505 [main] WARN org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext - Exception encountered during context initiali
zation - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class
 [org.sang.BlogserverApplication]; 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.
14:51:59.505 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.springframework.beans.factory.supp
ort.[email protected]: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.con
text.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.anno
tation.internalCommonAnnotationProcessor,org.springframework.context.event.internalEventListenerProcessor,org.springframework.context.event.internalEventListene
rFactory,blogserverApplication,constantConfig,webSecurityConfig,adminController,userManaController,articleController,categoryController,loginRegController,userC
ontroller,articleService,categoryService,dataStatisticsComponent,userService]; root of factory hierarchy
14:51:59.520 [main] ERROR org.springframework.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [org.sang.BlogserverApplication]; ne
sted exception is java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, mak
e sure that file is correct.
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:556)
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:185)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.ja
va:272)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:92)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
        at org.sang.BlogserverApplication.main(BlogserverApplication.java:12)
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:277)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:153)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.selectImports(AutoConfigurationImportSelector.java:95)
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:547)
        ... 14 common frames omitted

বিকল্পভাবে, যদি আপনি যে কোনও কারণে স্প্রিং বুট প্লাগইন ব্যবহার করতে না পারেন, তবে আপনি নিম্নলিখিত অ্যাপ্লিকেশনটিতে অন্তর্ভুক্ত করতে পারেন। এটিকে 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

এটি স্প্রিং বুট 1.x এর জন্য কাজ করবে এবং আপনি যদি একটি আরপিএলে বসন্ত পরিচালিত মটরশুটি ব্যবহার করতে চান তবে সহায়ক।


এটি ঘটছে কারণ মূল ক্লাসে কোডটি মন্তব্য করা দরকার, আমার ক্ষেত্রে


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 অন্যান্য ক্লাসের উপরে বেস প্যাকেজ রয়েছে @SpringBootApplication পরীক্ষা করুন। উদাহরণস্বরূপ, আসুন আপনার ক্লাস @SpringBootApplication একটি প্যাকেজের মধ্যে রয়েছে com.sb.foo তারপরে অন্যান্য সমস্ত বসন্তের স্টেরিওটাইপ ক্লাস com.sb.foo.xxx ভিতরে চলে যাওয়া উচিত যেখানে com.sb.foo.xxx কিছু হতে পারে। এটি আরও উপ প্যাকেজ com.sb.foo.xxx.yyy হতে পারে। অটো কনফিগারেশন সক্ষম করতে এটি স্প্রিংবুটটির কার্যকারিতা। এই অটো কনফিগারেশনটি আইডিইর মতো Intellij বা Eclipse মতো Intellij কাজ করে এমনকি আপনার ভুল হয়ে থাকলেও।

আপনি যদি কোনও বিল্ডিং সরঞ্জাম বা STS eclipse মতো পুনরুদ্ধারযোগ্য আইডিই ব্যবহার না করে থাকেন তবে এই জাতীয় সমস্যার মুখোমুখি হওয়ার সম্ভাবনা আরও বেশি।