Error in Import Shape file of neo4j using cypher query

I have installed below ,

  1. Neo4j Desktop IDE with neo4j version - 3.5.17
  2. Java version 8
  3. Spatial 0.26.2-neo4j-3.5.2

Try to import shape file to neo4j through cypher query,

call spatial.importShapefile("file:///home/.local/share/neo4j-relate/dbmss/dbms-3ad2b2c1-94c6-4482-8b1f-bcfe3f413670/import/cb_2019_us_state_500k.shp")

but it produces the error : Failed to invoke procedure spatial.importShapefile : Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.geotools.data.DataUtilities

how to fix this? Can anyone tell to solve this issues?

Do you have any other plugins installed in Neo4j? Sometimes there are conflicts between third party dependencies of those plugins. You could also check the neo4j.log and debug.log files for any errors when importing plugins and any further errors or stack trace when running the procedure that failed.

Thanks for reply craig,

I havent not installed any plugin, just create one database and add the "spatial plugin" to the plugin folder, but it gives the error.

I have two remaining theories. One is that perhaps this is an issue specific to desktop, which I've never tested, and the other is that it is an issue specific to your shapefile. Is there any chance you can share the shapefile with me so I can test it locally?

Thanks for your reply, Yes I have tried to import shapefile in neo4j Desktop using cypher Query, and have tried to upload my shapefile but it couldnt upload .. (here attachment support only jpeg,pdf..)

You could connect to me directly at neo4j-users.slack.com and upload the shapefile there for me to try out.

Hello @esakkiammal1036,

Not sure, if this is resolved, but I was able to import the shapefile into the database.
My Configuration ->
Neo4j 3.5.20
Java Version 8
neo4j-spatial-0.26.2
Source of the shapefile -> Index of /geo/tiger/GENZ2019/shp ( i guess you are also using the same file). Make sure all the file like prj, dbf are on the same directory. (Its bin of neo4j)

Can you check if whitelisted and unrestricted spatial.* plugins in your configuration.

dbms.security.procedures.unrestricted=algo.*,apoc.*,spatial.*
dbms.security.procedures.whitelist=algo.*,apoc.*,spatial.*
> Directories in use:
>   home:         /root/neo4j-enterprise-3.5.20
>   config:       /root/neo4j-enterprise-3.5.20/conf
>   logs:         /root/neo4j-enterprise-3.5.20/logs
>   plugins:      /root/neo4j-enterprise-3.5.20/plugins
>   import:       /root/neo4j-enterprise-3.5.20/import
>   data:         /root/neo4j-enterprise-3.5.20/data
>   certificates: /root/neo4j-enterprise-3.5.20/certificates
>   run:          /root/neo4j-enterprise-3.5.20/run
> Starting Neo4j.
> WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manual.
> 2020-12-29 12:13:14.593+0000 INFO  ======== Neo4j 3.5.20 ========
> 2020-12-29 12:13:14.603+0000 INFO  Starting...
> 2020-12-29 12:13:15.666+0000 INFO  Initiating metrics...
> 2020-12-29 12:13:15.667+0000 WARN  Exporting tool have been configured to report values to but no metrics were enabled. Disabling kernel metrics extension.
> 2020-12-29 12:13:30.513+0000 INFO  Bolt enabled on 0.0.0.0:7687.
> 2020-12-29 12:13:33.455+0000 INFO  Started.
> 2020-12-29 12:13:33.619+0000 INFO  Mounted REST API at: /db/manage
> 2020-12-29 12:13:33.679+0000 INFO  Loaded server plugin "SpatialPlugin"
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.addSimplePointLayer: add a new layer specialized at storing simple point location data
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.addNodesToLayer: adds many geometry nodes (about 10k-50k) to a layer, as long as the nodes contain the geometry information appropriate to this layer.
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.findClosestGeometries: search a layer for the closest geometries and return them.
> 2020-12-29 12:13:33.681+0000 INFO    GraphDatabaseService.addGeometryWKTToLayer: add a geometry specified in WKT format to a layer, encoding in the specified layers encoding schemea.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.findGeometriesWithinDistance: search a layer for geometries within a distance of a point. To achieve more complex CQL searches, pre-define the dynamic layer with addCQLDynamicLayer.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.addEditableLayer: add a new layer specialized at storing generic geometry data in WKB
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.addNodeToLayer: add a geometry node to a layer, as long as the node contains the geometry information appropriate to this layer.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.addCQLDynamicLayer: add a new dynamic layer exposing a filtered view of an existing layer
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.getLayer: find an existing layer
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.findGeometriesInBBox: search a layer for geometries in a bounding box. To achieve more complex CQL searches, pre-define the dynamic layer with addCQLDynamicLayer.
> 2020-12-29 12:13:33.682+0000 INFO    GraphDatabaseService.findGeometriesIntersectingBBox: search a layer for geometries intersecting a bounding box. To achieve more complex CQL searches, pre-define the dynamic layer with addCQLDynamicLayer.
> 2020-12-29 12:13:35.085+0000 INFO  Remote interface available at http://localhost:7474/
**> info | inserted geometries: 56**
**> info | elapsed time in seconds: 0.329**

> info | inserted geometries: 56
> info | elapsed time in seconds: 0.329

> neo4j> match (n) return count(n);
> +----------+
> | count(n) |
> +----------+
> | 0        |
> +----------+
> 
> 1 row available after 152 ms, consumed after another 0 ms
> neo4j>
> neo4j> call spatial.importShapefile("cb_2019_us_state_500k.shp");
> info | inserted geometries: 56
> info | elapsed time in seconds: 0.338
> +-------+
> | count |
> +-------+
> | 56    |
> +-------+
> 
> 1 row available after 978 ms, consumed after another 0 ms
> neo4j> match (n) return count(n);
> +----------+
> | count(n) |
> +----------+
> | 60       |
> +----------+
> 
> 1 row available after 27 ms, consumed after another 1 ms

neo4j> call db.labels();
+-----------------+
| label           |
+-----------------+
| "ReferenceNode" |
+-----------------+


match (n) return (n) limit 2;
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| (:ReferenceNode {name: "spatial_root"})                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ({index_class: "org.neo4j.gis.spatial.index.LayerRTreeIndex", gtype: 6, layercrs: "GEOGCS[\"GCS_North_American_1983\",
  DATUM[\"D_North_American_1983\",
    SPHEROID[\"GRS_1980\", 6378137.0, 298.257222101]],
  PRIMEM[\"Greenwich\", 0.0],
  UNIT[\"degree\", 0.017453292519943295],
  AXIS[\"Longitude\", EAST],
  AXIS[\"Latitude\", NORTH]]", ctime: 1609244499209, layerprops: ["ID", "STATEFP", "STATENS", "AFFGEOID", "GEOID", "STUSPS", "NAME", "LSAD", "ALAND", "AWATER"], geomencoder: "org.neo4j.gis.spatial.WKBGeometryEncoder", layer_class: "org.neo4j.gis.spatial.EditableLayerImpl", layer: "cb_2019_us_state_500k"}) |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


Let me or the community forums group know if you need further more assistance.

Last week I tried again to port the spatial library to Neo4j 4.x, and it was a much bigger job than expected, largely due to the change in transaction handling. While there is still more work to do before this is complete, I did notice the same error you got:

NoClassDefFoundError: Could not initialize class org.geotools.data.DataUtilities

And every time I got this error it was due to running Geotools libraries in newer Java. When I ran in Java 8, I did not see this error, but in Java 11 (which Neo4j 4.x requires) I get the error. I've seen reports that this is an issue with older Geotools that requires upgrading to the very latest version. Since the library uses very old version 14, and the newer versions are 22, this is quite a big jump.

Anyway, my current impression is that it is likely you are still using a newer Java, not Java8.