Windows下Neo4j调用apoc.spatial.geocodeOnce()报错求助
解决Neo4j APOC geocodeOnce证书路径错误问题
在Windows系统的Neo4j Desktop 5.2版本中,使用APOC 5.2.1执行以下Cypher查询时:
call apoc.spatial.geocodeOnce('44113') yield location return location.longitude, location.latitude
触发报错:
Failed to invoke procedure
apoc.spatial.geocodeOnce: Caused by:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
以下是针对性的解决方案:
导入地理编码服务证书到JVM信任库
apoc.spatial.geocodeOnce默认调用OpenStreetMap Nominatim服务,需确保Windows系统中Neo4j使用的JVM信任该服务的SSL证书:- 打开浏览器访问
https://nominatim.openstreetmap.org/,点击地址栏锁形图标导出证书为.crt格式。 - 找到Neo4j Desktop对应的JDK安全目录,通常路径为
C:\Users\<你的用户名>\.Neo4jDesktop\relate-data\dbmss\dbms-<随机ID>\jdk\lib\security。 - 打开命令提示符,切换到上述目录,执行证书导入命令(替换
<证书文件路径>和<自定义别名>):
默认信任库密码为keytool -import -alias <自定义别名> -keystore cacerts -file <证书文件路径>changeit,按提示输入密码并确认导入操作。
- 打开浏览器访问
测试环境临时绕过SSL验证
若仅用于测试,可在neo4j.config中添加配置跳过证书检查:apoc.spatial.geocode.skipSslValidation=true保存配置后重启Neo4j服务,再执行原查询。
验证结果
修复后重新执行查询,应返回邮编44113对应的经纬度(大致为经度-81.6342,纬度41.4778)。
内容的提问来源于stack exchange,提问作者minottimat
相关产品推荐
相关产品推荐

