Nano Hash - криптовалюты, майнинг, программирование

Почему Neo4j OGM с Spring Boot 2.0.0.M4, по-видимому, требует встроенного драйвера?

Я тестировал Spring Boot 2 (на данном этапе 2.0.0.M4) с последней версией Spring Data Neo4j (в настоящее время 5.0.0.RC3) и не могу запустить ее.

Я получаю следующую ошибку:

org.neo4j.ogm.exception.ConfigurationException: Could not load driver class org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver

Я не прошу встроенный драйвер и не хочу его. Я хочу использовать только драйвер болта, который уже является зависимостью от spring-data-neo4j.

Я опубликовал проект на Github, который был создан с использованием выходных данных Spring Initializr, который можно запустить для выявления ошибки.

Для справки, мой build.gradle выглядит следующим образом. Я неправильно настроил свой проект? Или что-то более серьезное не так с текущими сборками Spring и Neo4j?

buildscript {
    ext {
        springBootVersion = '2.0.0.M4'
    }
    repositories {
        mavenCentral()
        maven { url 'https://repo.spring.io/snapshot' }
        maven { url 'https://repo.spring.io/milestone' }
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
    }
}

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

version = "0.0.1-SNAPSHOT"

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}

dependencies {
    compile "org.apache.tomcat.embed:tomcat-embed-jasper"
    compile "org.springframework.boot:spring-boot-starter-web"
    compile "org.springframework.boot:spring-boot-starter-data-neo4j"
    runtime "org.springframework.boot:spring-boot-devtools"
}

Остальной код доступен на Github, как я упоминал ранее.


Ответы:


1

У вас нигде нет встроенной зависимости драйвера, см.

./gradlew dependencies

вывод и поиск neo4j-ogm.*driver - присутствует только драйвер neo4j-ogm-bolt. Поэтому, если вы хотите использовать только болт, у вас правильно настроены зависимости.

Причина, по которой вы видите это исключение, заключается в том, что ваша конфигурация неверна:

return new SessionFactory("com.example.domain");

Это не указывает путь к файлу конфигурации, по умолчанию используется непостоянная встроенная база данных, для которой требуется встроенный драйвер - отсюда и исключение.

У вас есть два варианта

  • передать конфигурацию OGM в SessionFactory:

    @Bean
    public org.neo4j.ogm.config.Configuration configuration() {
        return new org.neo4j.ogm.config.Configuration.Builder(new ClasspathConfigurationSource("ogm.properties")).build();
    }
    @Bean
    public SessionFactory sessionFactory() {
        return new SessionFactory(configuration(), "com.example.domain");
    }
    

    имейте в виду, что это решение только для OGM и не поддерживает файлы yml.

  • используйте автоматическую настройку весенней загрузки для SDN — просто удалите класс Neo4jConfiguration, Spring Boot обнаружит отсутствие SessionFactory bean-компонента и настроит все необходимое (включая диспетчер транзакций). Оставьте свой Application класс и application.yml как есть.

25.09.2017
  • Ах, да, второй вариант мне больше нравится, спасибо, попробую. 25.09.2017
  • Спасибо, что четко исправили проблему, и это хорошее напоминание о RTFM внимательнее. 26.09.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..