2017-03-20 450 views
0

我正在使用Spring Boot和Solr。当我在双龙Maven的配置,我收到了意外的异常:错误:必须在Spring Boot中指定@ConditionalOnProperty的名称或值属性

POM:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.5.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
     <exclusions> 
      <exclusion> 
       <artifactId>hibernate-entitymanager</artifactId> 
       <groupId>org.hibernate</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <!-- SOLR --> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-solr</artifactId> 
     <version>${spring-data-solr.verion}</version> 
    </dependency> 

    <!-- JSON --> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.9.11</version> 
    </dependency> 

    <!-- WEB --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <version>8.0.27</version> 
    </dependency> 
    <!-- Hibernate 4 dependencies --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-c3p0</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-commons --> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-commons</artifactId> 
     <version>1.12.5.RELEASE</version> 
    </dependency>  
</dependencies> 

应用类:

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
@Import({SearchContext.class, WebContext.class }) 
public class Application { 

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
    } 
} 

登录异常:

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to load bean class: ; nested exception is java.lang.IllegalStateException: The name or value attribute of @ConditionalOnProperty must be specified 
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:390) 
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:162) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:299) 
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:609) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:120) 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:648) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:909) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:898) 
at com.totoroads.data.solr.showcase.Application.main(Application.java:31) 
Caused by: java.lang.IllegalStateException: The name or value attribute of @ConditionalOnProperty must be specified 
at org.springframework.util.Assert.state(Assert.java:385) 
at org.springframework.boot.autoconfigure.condition.OnPropertyCondition.getNames(OnPropertyCondition.java:101) 
at org.springframework.boot.autoconfigure.condition.OnPropertyCondition.getMatchOutcome(OnPropertyCondition.java:55) 
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:44) 
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:92) 
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:187) 
at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:433) 
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:387) 
... 13 more 

如果我跑旧版本,everthing是好的,但是当升级到1.2.5我看到上面的错误。如何解决这个异常,非常感谢!

回答

0

尝试检查在GitHub Spring-boot issues list上打开的相关问题。

看来你需要Spring框架的一个较新版本的Spring Boot 1.2 Release Note解释说:

Spring Boot 1.2 requires Spring Framework 4.1.5 or later and is not compatible with Spring Framework 4.0.

+0

感谢@aUserHimselt:我检查你对春天的引导链接版本.. –

+0

有用吗?接受答案或通过此解决方案发布输出,以便具有类似问题的其他人可以使用它。 – aUserHimself

+0

@hi aUserHimself:是它的工作,我已经更新到最新版本1.5.2。随着每个版本,API被改变,所以我必须更新我的代码,无论如何感谢这么多:) –

相关问题