Spring boot Cassandra "Ошибка при создании bean-компонента с именем 'session'" - PullRequest
0 голосов
/ 25 ноября 2018

У меня проблема с простым приложением Spring Boot.Я использую:

  • spring-boot-starter-parent
  • spring-boot-starter-data-cassandra
  • Cassandra 3.11.3 (оба в CentOS7 сервер и локальная Mac OS) (работает cqlsh)

Я следовал простому руководству из https://www.baeldung.com/spring-data-cassandra-tutorial, и независимо от того, запущена ли Cassandra или нет, при запуске я получаю одну ошибку:

2018-11-25 09:12:34.581 ERROR 83213 --- [main] o.s.boot.SpringApplication: Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'session' defined in class path resource [some/project/path/CassandraConfig.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: com/codahale/metrics/JmxReporte

Мой класс конфигурации:

@Configuration
@EnableCassandraRepositories(basePackages = "packagename")
public class CassandraConfig extends AbstractCassandraConfiguration {

    @Override
    protected String getKeyspaceName() {
        return "test";
    }

    @Bean
    public CassandraClusterFactoryBean cluster() {
        CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
        cluster.setContactPoints("127.0.0.1");
        cluster.setPort(9042);
        return cluster;
    }

    @Override
    public SchemaAction getSchemaAction() {
        return SchemaAction.CREATE_IF_NOT_EXISTS;
    }

    @Override
    public String[] getEntityBasePackages() {
        return new String[]{"packagename"};
    }
}

Сущность:

@Table
public class Image implements Serializable {

    @PrimaryKeyColumn(
        name = "key",
        ordinal = 0,
        type = PrimaryKeyType.PARTITIONED)
    private UUID id;

    @Column
    private Blob object;
}

Хранилище:

@Repository
public interface ImagesRepository extends CrudRepository<Image, UUID> {
}

Структура Кассандры:

CREATE TABLE images (
    key text,
    object blob,
    PRIMARY KEY (key)
);

Также https://github.com/springframeworkguru/spring-boot-cassandra-example также выдает ошибку при создании компонента.

1 Ответ

0 голосов
/ 25 ноября 2018

Вам не хватает Dropwizard зависимость:

В качестве зависимости вам нужна библиотека metrics-core:

<dependencies>
<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>${metrics.version}</version>
</dependency>

Примечание

Убедитесь, что у вас есть свойство metrics.version, объявленное в вашем POM с текущей версией 3.1.0.

...