Java 8 intellij и gradle fat jar не найдут файлы конфигурации и не включат автоконфигурацию - PullRequest
3 голосов
/ 26 марта 2019

Я пытаюсь построить толстую банку, но она дает мне ошибку.Ранее я создал толстый jar с javaFx 11 и java 11. Теперь я использую Java 8 и Spring. Я делаю это с intellij из File> Project Structure> Artifacts, там я выбираю основной модуль ProjectRoot, а затем также добавляю содержимое моего каталога ресурсов иЯ строю банку.

[main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Could not find key 'spring.boo              t.enableautoconfiguration' in any property source
21:31:42.635 

[main] ERROR org.springframework.boot.SpringApplication - Application run failed
    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:450)
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:160)
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.selectImports(AutoConfigurationImportSelector.java:96)
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:386)
    at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:828)
    at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:563)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:316)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:233)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:271)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:91)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:694)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246)
    at com.tick42.QuicksilverApplication.main(QuicksilverApplication.java:13)

Мой проект:

>ProjectRoot
    >src
        >main
            >resources
            >java
                >com
                    >projectId
                        >restaurant
                        RestaurantApplication.class

В папке ресторана находятся все мои настройки и классы проекта.Моя сборка Gradle находится в корне проекта:

buildscript {
    ext {
        springBootVersion = '2.0.4.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'jacoco'

group = 'com.projectId'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile("org.springframework.boot:spring-boot-starter-security")
    testCompile('org.springframework.boot:spring-boot-starter-test')
    compile group: 'org.springframework.security', name: 'spring-security-jwt', version: '1.0.2.RELEASE'
    compile group: 'io.jsonwebtoken', name: 'jjwt', version: '0.6.0'
    compile group: 'com.mchange', name: 'c3p0', version: '0.9.5.2'
    compile group: 'org.springframework', name: 'spring-jdbc', version: '5.0.8.RELEASE'
    compile group: 'org.hibernate', name: 'hibernate-gradle-plugin', version: '5.3.5.Final'
    compile group: 'log4j', name: 'log4j', version: '1.2.17'
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.6'
    compile group: 'com.googlecode.log4jdbc', name: 'log4jdbc', version: '1.2'
    compile "org.springframework.boot:spring-boot-configuration-processor"
    compile 'org.passay:passay:1.3.1'
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5'
    compile group: 'commons-io', name: 'commons-io', version: '2.6'
    compile group: 'org.kohsuke', name: 'github-api', version: '1.93'
}

jacocoTestReport {
    reports {
        xml.enabled = true
        html.enabled = true
    }
}

check.dependsOn jacocoTestReport

settings.gradle:

rootProject.name = 'server-side'

Мой RestaurantAplication.class находится в папке моего ресторана, но я где-то читал, что это должно бытьвыше моего пакета с моими классами, поэтому я переместил его в папку projectId, но это не сработало.

Мой основной:

@SpringBootApplication
@EnableScheduling
@EnableConfigurationProperties
public class RestaurantApplication {
    public static void main(String[] args) {
        SpringApplication.run(RestaurantApplication.class, args);
    }
}

Редактировать: в весенних фабриках jars вв папке META-INF есть только одна строка:

org.springframework.beans.BeanInfoFactory=org.springframework.beans.ExtendedBeanInfoFactory

Я попытался добавить их в файл, добавив некоторые из перечисленных в сообщении об ошибке, а также мои файлы конфигурации:

org.springframework.beans.BeanInfoFactory=org.springframework.beans.ExtendedBeanInfoFactory
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector
org.springframework.context.annotation.ConfigurationClassParser

com.projectId.restaurant.config.AppConfig
com.projectId.restaurant.config.PasswordEncoderConfig
com.projectId.restaurant.config.ScheduleConfig
com.projectId.restaurant.config.Scheduler
com.projectId.restaurant.config.SecurityConfig

Но даже в этом случае строки в ошибке все еще существуют для точных конфигураций, которые я добавил:

...
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:160)
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.selectImports(AutoConfigurationImportSelector.java:96)
    at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:386)
    at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:828)
    at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:563)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:316)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:233)

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...