添加neo4j-ogm-quarkus依赖后Quarkus应用启动失败
问题:添加neo4j-ogm-quarkus依赖后Quarkus应用无法启动
使用Gradle+Kotlin创建了Quarkus v3.17.7版本的新项目,添加依赖implementation("org.neo4j:neo4j-ogm-quarkus:3.11.0")后应用无法启动。尝试过以下操作,但问题依旧:
- 让Quarkus自动构建Neo4j Docker镜像
- 使用自有Neo4j数据库(v4.3.3和v5.26.1)
- 更换Quarkus版本(v3.17.3、v3.15.3)
- 更换neo4j-ogm-quarkus版本(3.9.0)
启动错误日志
2025-01-27 09:23:41,492 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application: java.lang.RuntimeException: Failed to start quarkus at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source) at io.quarkus.runtime.Application.start(Application.java:101) at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:119) at io.quarkus.runtime.Quarkus.run(Quarkus.java:71) at io.quarkus.runtime.Quarkus.run(Quarkus.java:44) at io.quarkus.runtime.Quarkus.run(Quarkus.java:124) at io.quarkus.runner.GeneratedMain.main(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:116) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: java.lang.NoClassDefFoundError: io/micrometer/context/ContextSnapshotFactory at java.base/java.lang.Class.getDeclaredFields0(Native Method) at java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3297) at java.base/java.lang.Class.getDeclaredFields(Class.java:2371) at org.neo4j.ogm.metadata.FieldsInfo.<init>(FieldsInfo.java:57) at org.neo4j.ogm.metadata.ClassInfo.<init>(ClassInfo.java:139) at org.neo4j.ogm.metadata.ClassInfo.<init>(ClassInfo.java:119) at org.neo4j.ogm.metadata.DomainInfo.lambda$addClass$2(DomainInfo.java:172) at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1220) at org.neo4j.ogm.metadata.DomainInfo.addClass(DomainInfo.java:172) at org.neo4j.ogm.metadata.DomainInfo.create(DomainInfo.java:98) at org.neo4j.ogm.metadata.MetaData.<init>(MetaData.java:66) at org.neo4j.ogm.session.SessionFactory.<init>(SessionFactory.java:124) at org.neo4j.ogm.session.SessionFactory.<init>(SessionFactory.java:110) at org.neo4j.ogm.quarkus.runtime.Neo4jOgmRecorder.initializeSessionFactory(Neo4jOgmRecorder.java:65) at io.quarkus.deployment.steps.Neo4jOgmProcessor$createSessionFactory1383093778.deploy_0(Unknown Source) at io.quarkus.deployment.steps.Neo4jOgmProcessor$createSessionFactory1383093778.deploy(Unknown Source) ... 13 more Caused by: java.lang.ClassNotFoundException: io.micrometer.context.ContextSnapshotFactory at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:565) at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:513) ... 29 more
build.gradle.kts依赖配置
dependencies { implementation(enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")) implementation("io.quarkus:quarkus-arc") implementation("io.quarkus:quarkus-rest") implementation("io.quarkus:quarkus-config-yaml") implementation("io.quarkus:quarkus-rest-jackson") implementation("io.quarkus:quarkus-smallrye-health") // Quarkus Neo4j Extension // implementation("io.quarkiverse.neo4j:quarkus-neo4j:5.0.3") // implementation("io.micrometer:context-propagation:1.1.2") // implementation("org.conscrypt:conscrypt-openjdk:2.5.2") implementation("org.neo4j:neo4j-ogm-quarkus:3.11.0") // Lombok compileOnly("org.projectlombok:lombok:1.18.36") annotationProcessor("org.projectlombok:lombok:1.18.36") // MapStruct implementation("org.mapstruct:mapstruct:1.6.3") annotationProcessor("org.mapstruct:mapstruct-processor:1.6.3") // Test frameworks testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.rest-assured:rest-assured") }
复现步骤
- 创建Quarkus新项目(Gradle+Kotlin)
- 添加
implementation("org.neo4j:neo4j-ogm-quarkus:3.11.0")依赖 - 启动应用,观察启动报错
内容的提问来源于stack exchange,提问作者Radu
相关产品推荐
相关产品推荐

