我一直在使用最新的Spring Data Neo4j(目前为5.0.0.RC3)试用Spring Boot 2(2.0.0.M4),似乎无法让它运行。
我收到以下错误:
org.neo4j.ogm.exception.ConfigurationException: Could not load driver class org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
我不要求嵌入式驱动程序,也不需要嵌入式驱动程序。我只想使用bolt驱动程序,它已经是spring-data-neo4j的依赖项。
我发布了project to 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中可用。
答案 0 :(得分:2)
您在任何地方都没有嵌入式驱动程序依赖项,请参阅
./gradlew dependencies
输出并搜索neo4j-ogm.*driver
- 仅存在neo4j-ogm-bolt驱动程序。因此,如果您只想使用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的spring boot auto配置 - 只需删除Neo4jConfiguration
类,Spring Boot将检测到没有SessionFactory
bean并将配置所有必需的(包括事务管理器)。保持Application
班级和application.yml
不变。