neo4j / apoc

Apache License 2.0
81 stars 27 forks source link

community server 5.21.0 cannot start with apoc 5.21.0 enabled #640

Closed Bill-XU closed 1 month ago

Bill-XU commented 1 month ago

Expected Behavior (Mandatory)

Neo4j community server 5.21.0 installed on Windows Server 2016. Expecting running neo4j service normally with apoc enabled.

Actual Behavior (Mandatory)

An error occurs and server cannot start. The error says, "Unable to set up injection for procedure Xml, the field apocConfig has type class apoc.ApocConfig which is not a known injectable component."

When running without apoc, server works normally. (both neo4j browser and bolt work normally)

How to Reproduce the Problem

Steps (Mandatory)

  1. Instart Neo4j community server 5.21.0 on Windows Server 2016
  2. Copy apoc-core-5.21.0-core.jar from labs folder to plugins folder
  3. Start server

Specifications (Mandatory)

Currently used versions

Versions

Bill-XU commented 1 month ago

Full stacktraces are here:

2024-07-04 09:22:11.200+0000 ERROR [o.n.g.f.DatabaseManagementServiceFactory] Error starting Neo4j database server at D:\neo4j_db\data\databases org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.procedure.impl.GlobalProceduresRegistry@2d258eff' was successfully initialized , but failed to start. Please see the attached cause exception "Unable to set up injection for procedure Xml, the field apocConfig has type c lass apoc.ApocConfig which is not a known injectable component.". at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:364) ~[neo4j-common-5.21.0.jar:5.21.0] at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:91) ~[neo4j-common-5.21.0.jar:5.21.0] at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:271) [neo4j-5.21.0. jar:5.21.0] at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.build(DatabaseManagementServiceFactory.java:215) [neo4j-5.21.0.jar:5.21.0] at org.neo4j.server.CommunityBootstrapper.createNeo(CommunityBootstrapper.java:38) [neo4j-5.21.0.jar:5.21.0] at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:184) [neo4j-5.21.0.jar:5.21.0] at org.neo4j.server.BlockingBootstrapper.start(BlockingBootstrapper.java:46) [neo4j-5.21.0.jar:5.21.0] at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:99) [neo4j-5.21.0.jar:5.21.0] at org.neo4j.server.CommunityEntryPoint.start(CommunityEntryPoint.java:42) [neo4j-5.21.0.jar:5.21.0] Caused by: org.neo4j.kernel.api.exceptions.ComponentInjectionException: Unable to set up injection for procedure Xml, the field apocConfig has type class apoc.ApocConfig which is not a known injectable component. at org.neo4j.procedure.impl.FieldInjections.createInjector(FieldInjections.java:92) ~[neo4j-procedure-5.21.0.jar:5.21.0] at org.neo4j.procedure.impl.FieldInjections.setters(FieldInjections.java:74) ~[neo4j-procedure-5.21.0.jar:5.21.0] at org.neo4j.procedure.impl.ProcedureCompiler.compileProcedure(ProcedureCompiler.java:288) ~[neo4j-procedure-5.21.0.jar:5.21.0] at org.neo4j.procedure.impl.ProcedureCompiler.compileProcedure(ProcedureCompiler.java:242) ~[neo4j-procedure-5.21.0.jar:5.21.0] at org.neo4j.procedure.impl.ProcedureJarLoader.loadProceduresFromDir(ProcedureJarLoader.java:89) ~[neo4j-procedure-5.21.0.jar:5.21.0] at org.neo4j.procedure.impl.GlobalProceduresRegistry.unguardedLoadFromDisk(GlobalProceduresRegistry.java:240) ~[neo4j-procedure-5.21.0.jar :5.21.0] at org.neo4j.procedure.impl.GlobalProceduresRegistry.start(GlobalProceduresRegistry.java:209) ~[neo4j-procedure-5.21.0.jar:5.21.0] at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:347) ~[neo4j-common-5.21.0.jar:5.21.0] ... 8 more

Bill-XU commented 1 month ago

After reviewing system requirements, I replaced openjdk17 with oraclejdk21. And now it's working normally with apoc enabled. So this is just a jdk issue. Sorry for disturbing, should read manuals carefully.

Reference: https://neo4j.com/docs/operations-manual/current/installation/requirements/

For cloud environments, and server-based, on-premise environments: Operating System Supported JDK
Windows Server 2016, 2019, 2022 OracleJDK 17, ZuluJDK 17