【问题标题】:SPRING4: Failed to read candidate component class CouchbaseConfig.classSPRING4:无法读取候选组件类 CouchbaseConfig.class
【发布时间】:2015-10-05 05:27:33
【问题描述】:

我有问题。我正在使用 Spring4,我想添加一个配置以便能够使用 Spring Data Couchbase,但我遇到了一个错误:

org.springframework.beans.factory.BeanDefinitionStoreException:读取候选组件类失败:文件 [/home/charlie/桌面/终极版 项目/novare_dashboard/novare-project-dashboard/target/classes/hk/com/novare/dashboard/configuration/CouchbaseConfig.class]; 嵌套异常是 java.lang.annotation.AnnotationFormatError: 无效的默认值:公共抽象 java.lang.Class org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories.repositoryBaseClass() 在 org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:303)

这是我的代码:

CouchbaseConfig.java

@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfig extends AbstractCouchbaseConfiguration{

@Override
protected List<String> bootstrapHosts() {
    return Collections.singletonList("localhost");
}

@Override
protected String getBucketName() {
    return "crud";
}

@Override
protected String getBucketPassword() {
    return "password";
}}

WebMvcConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackageClasses = Application.class)
public class WebMvcConfig extends WebMvcConfigurerAdapter {

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

@Bean
public InternalResourceViewResolver jspViewResolver() {
    InternalResourceViewResolver bean = new InternalResourceViewResolver();
    bean.setPrefix("/WEB-INF/views/");
    bean.setSuffix(".jsp");
    return bean;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/static/");
}}

POM.XML

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--H2-->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!--couchbase-->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-couchbase</artifactId>
        <version>1.4.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.couchbase.client</groupId>
        <artifactId>couchbase-client</artifactId>
        <version>1.4.9</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.0</version>
    </dependency>

    <!--JSON-->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?

标签: java spring-mvc spring-boot spring-data-couchbase


【解决方案1】:

可以看到为您的 CouchbaseConfig 类创建存储库代理所需的缺少 repositoryBaseClass 配置的错误:-

nested exception is java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class 
org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories.repositoryBaseClass() at 

请指定与@EnableCouchbaseRepositories 相同的参数

【讨论】:

  • 我在basePackages和baseClassesPackage之前也试过了,但还是一样。
  • org.springframework.beans.factory.BeanDefinitionStoreException:无法读取候选组件类:文件 [/home/charlie/Desktop/Ultimate Projects/novare_dashboard/novare-project-dashboard/target/classes/hk /com/novare/dashboard/configuration/CouchbaseConfig.class];嵌套异常是 java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories.repositoryBaseClass() *我还添加了参数,但仍然相同 @EnableCouchbaseRepositories( basePackages = "hk.com.novare.dashboard")
  • 您是否在扩展 CouchbaseConfig 的包中定义了与 @Repository 的任何接口??
  • @Repository public interface PersonRepository extends CrudRepository { } **这是我的 PersonRepository 类。我导入这个:-> import org.springframework.data.repository.CrudRepository;
  • 使用 spring data couchbase 1.2.2 并删除存储库上的 @Repository ,它会正常工作。
【解决方案2】:

我刚刚找到了关于我的错误的解决方案。您必须将 spring-data-couchbase 版本更改为 1.2.2 并将注释 @Repository 删除到您的存储库。

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 2018-08-23
    • 2021-12-29
    • 2014-05-11
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多