Java.lang.IllegalStateException: Condition de traitement d'erreur sur org.springframework.démarrage.auto-configurer.jdbc.JndiDataSourceAutoConfiguration


J'essaie d'écrire un pot exécutable autonome (fat jar) . J'utilise le plugin spring boot gradle et j'écris une application SpringBoot pour ce faire.

Voici ma candidature.fichier java

@Configuration
@EnableAutoConfiguration
@EnableRabbit
@EntityScan("persistence.domain")
@EnableJpaRepositories("persistence.repository")
@ComponentScan(basePackages = {"common","service"})
public class Application {

     public static void main(final String[] args) {
            final SpringApplicationBuilder appBuilder = new SpringApplicationBuilder(
                Application.class);
            appBuilder.profiles("common", "common_db").run(args);
          }

      @Bean
      @Primary
      @ConfigurationProperties(prefix = "spring.datasource")
      public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
      }
}

J'ai spécifié des propriétés dans les fichiers yml. Pour ex application-commun etc. Lors de l'exécution de l'application.java je reçois une erreur:

[2015-09-24 14:40:22.304] boot - 32791  INFO [main] ---AnnotationConfigEmbeddedWebApplicationContext: Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@51a282af: startup date [Thu Sep 24 14:40:22 IST 2015]; root of context hierarchy
[2015-09-24 14:40:23.194] boot - 32791  WARN [main] --- AnnotationConfigEmbeddedWebApplicationContext: Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to load bean class: ; nested exception is java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:392)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:165)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:305)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:611)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:109)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:142)
at storm.Application.main(Application.java:28)
Caused by: java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:58)
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:92)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:190)
at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:435)
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:389)
... 12 more
Caused by: java.lang.NullPointerException
at org.springframework.boot.autoconfigure.condition.OnPropertyCondition.getMatchOutcome(OnPropertyCondition.java:61)
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:45)
... 16 more

Voici ma construction.gradle

def projects= [
    ":common",
    ":persistence",
    ":adapter"

]

buildscript {
repositories {
  mavenCentral()
  maven { url 'http://repo.spring.io/snapshot' }
  maven { url 'http://repo.spring.io/milestone' }
}
dependencies { classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: springBootVersion }

}

apply plugin: 'spring-boot'
apply plugin: 'maven-publish'
apply from: "${rootDir}/deployTasks.gradle"

springBoot {
mainClass = "storm.Application"
}

dependencies {
    compile project(':common')
    compile project(':adapter')
    compile project(':persistence')
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.1.8.RELEASE'
    compile group : 'org.springframework.boot',name: 'spring-boot-autoconfigure', version : '1.1.8.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '1.1.8.RELEASE'

}

Spécification de base de données comme dans application-common_db.yml

database:
host: localhost
port: 3306
schema: subscriptions
username: root
password: root
autoconnect:
maxReconnects: 3
initialTimeout: 2
timeout:
connectTimeout: 0
socketTimeout: 0
failover:
host: localhost 
port: 3306
queriesBeforeRetryMaster: 50
secondsBeforeRetryMaster: 30


spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://${database.host}:${database.port},${database.failover.host}:${database.failover.port}/${database.schema}?${database.properties}
username: ${database.username}
password: ${database.password}
continueOnError: true
initialize: false
initialSize: 0
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 5000
removeAbandonedTimeout: 60
removeAbandoned: true
minIdle: 0

Je ne sais pas comment résoudre cette erreur . Nybody peut-il suggérer ce qui ne va pas ici et pourquoi est-ce que je reçois NullPointerException.

L'aide est appréciée .

Merci

Author: dapc, 2015-09-24

5 answers

Ceci est causé par des dépendances Spring Boot non correspondantes. Vérifiez votre chemin de classe pour trouver les ressources incriminées. Vous avez explicitement inclus la version 1.1.8.RELEASE , mais vous avez également inclus 3 autres projets. Ceux-ci contiennent probablement différentes versions de Spring Boot, ce qui conduit à cette erreur.

 33
Author: Gergely Bacso, 2015-09-24 12:35:16

Cette erreur est due à plusieurs projets ayant les ressources incriminées.

Essayez d'ajouter les projets de dépendances dans un autre sens. (comme dans le pom.xml ou dépendances externes)

entrez la description de l'image ici

 0
Author: Sireesh Yarlagadda, 2016-05-09 02:18:15

Dans mon cas, j'avais créé une application SB à partir de l'initialiseur SB et y avais inclus un bon nombre de DEP à d'autres choses. Je suis entré et j'ai commenté les arbitres dans la construction.fichier gradle et a donc été laissé avec:

implementation 'org.springframework.boot:spring-boot-starter-hateoas'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.hsqldb:hsqldb'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'

Comme deps. Ensuite, mon application bare-bones SB a pu construire et fonctionner avec succès. Comme je vais essayer de faire des choses qui peuvent avoir besoin de ces bibliothèques commentées, je vais les ajouter et voir ce qui se casse.

 0
Author: Matt Campbell, 2019-06-09 19:13:02

Je sais que c'est assez ancien, mais j'ai fait face à un problème similaire et je l'ai résolu d'une manière différente. Le pom actuator-autoconfigure était en quelque sorte invalide et il lançait donc IllegalStateException. J'ai supprimé les dépendances actuator* de mon repo maven et fait une mise à jour Maven dans eclipse, qui a ensuite téléchargé les dépendances correctes/valides et résolu mon problème.

 0
Author: Pratik Kumawat, 2019-12-27 07:23:22

J'ai eu la même chose à cause de l'incompatibilité de version vérifiez la version ou supprimez la version si vous utilisez spring boot

 0
Author: Romio Ranjan Sahoo, 2020-12-28 11:16:45