Neo4j插件阻止数据库启动

cqoc49vn  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(204)

我开发了一个适用于最终用户的Neo4j插件。但是有一个用户遇到了我无法解释的问题。他的Neo4j安装(Enterprise v 4.5.5)包括APOC和GDS插件工作正常。但后来他添加了Graphs for Genealogists插件,它在配置文件中被列入白名单,数据库无法启动。调试文件消息在下面的链接中。我看不出它有什么修复的地方,我希望其他人能提供一些意见。
debug.log

sqxo8psd

sqxo8psd1#

基于以下堆栈跟踪:

Caused by: java.lang.NoClassDefFoundError: Lorg/neo4j/driver/Session;
    at java.lang.Class.getDeclaredFields0(Native Method) ~[?:?]
    at java.lang.Class.privateGetDeclaredFields(Class.java:3061) ~[?:?]
    at java.lang.Class.getDeclaredFields(Class.java:2248) ~[?:?]
    at org.neo4j.procedure.impl.FieldInjections.setters(FieldInjections.java:60) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureCompiler.compileFunction(ProcedureCompiler.java:315) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureCompiler.compileFunction(ProcedureCompiler.java:133) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureJarLoader.loadProcedures(ProcedureJarLoader.java:123) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureJarLoader.loadProceduresFromDir(ProcedureJarLoader.java:96) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.GlobalProceduresRegistry.start(GlobalProceduresRegistry.java:371) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:442) ~[neo4j-common-4.4.5.jar:4.4.5]
    ... 8 more
Caused by: java.lang.ClassNotFoundException: org.neo4j.driver.Session
    at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[?:?]
    at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[?:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
    at java.lang.Class.getDeclaredFields0(Native Method) ~[?:?]
    at java.lang.Class.privateGetDeclaredFields(Class.java:3061) ~[?:?]
    at java.lang.Class.getDeclaredFields(Class.java:2248) ~[?:?]
    at org.neo4j.procedure.impl.FieldInjections.setters(FieldInjections.java:60) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureCompiler.compileFunction(ProcedureCompiler.java:315) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureCompiler.compileFunction(ProcedureCompiler.java:133) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureJarLoader.loadProcedures(ProcedureJarLoader.java:123) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.ProcedureJarLoader.loadProceduresFromDir(ProcedureJarLoader.java:96) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.procedure.impl.GlobalProceduresRegistry.start(GlobalProceduresRegistry.java:371) ~[neo4j-procedure-4.4.5.jar:4.4.5]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:442) ~[neo4j-common-4.4.5.jar:4.4.5]
    ... 8 more

看起来其中一个程序正在尝试使用Neo4j的Java驱动程序,但是运行时没有这个可用的依赖项。我假设这是你创作的插件的一部分。
我看到两个选择:
1.确保在打包插件时包含Java驱动程序类(例如maven-shade-plugin)
1.由于插件是在服务器端运行的,所以实际上根本不需要Java驱动程序,您可以在过程类中获取一个GraphDatabaseService作为用@Context注解的字段,并从那里执行Cypher查询。

相关问题