首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ne4j-spatial代码中的类强制转换异常

Ne4j-spatial代码中的类强制转换异常
EN

Stack Overflow用户
提问于 2014-05-27 23:29:31
回答 1查看 65关注 0票数 0

以下代码片段:

代码语言:javascript
复制
GraphDatabaseService graphDb = new EmbeddedGraphDatabase("var/geo");
// Wrap it as a spatial db service
SpatialDatabaseService spatialDb = new SpatialDatabaseService(graphDb);
// Create the layer to store our spatial data
EditableLayer runningLayer = (EditableLayer) spatialDb.getOrCreateLayer("running", SimplePointEncoder.class, EditableLayerImpl.class, "lon:lat");

失败,并显示以下错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.ClassCastException: org.neo4j.collections.graphdb.impl.EmbeddedGraphDatabase cannot be cast to org.neo4j.kernel.GraphDatabaseAPI
at org.neo4j.cypher.ExecutionEngine.<init>(ExecutionEngine.scala:113)
at org.neo4j.cypher.javacompat.ExecutionEngine.<init>(ExecutionEngine.java:53)
at org.neo4j.cypher.javacompat.ExecutionEngine.<init>(ExecutionEngine.java:43)
at org.neo4j.collections.graphdb.ReferenceNodes.getReferenceNode(ReferenceNodes.java:60)
at org.neo4j.gis.spatial.SpatialDatabaseService.getSpatialRoot(SpatialDatabaseService.java:76)
at org.neo4j.gis.spatial.SpatialDatabaseService.getLayer(SpatialDatabaseService.java:108)
at org.neo4j.gis.spatial.SpatialDatabaseService.getOrCreateLayer(SpatialDatabaseService.java:202)
at com.bmt.contain.spatial.test.SpatialTest.main(SpatialTest.java:47)

我试图让here中的示例代码正常工作,我已经在下面包含了相关的导入语句,以防我以某种方式导入了错误版本的函数。

代码语言:javascript
复制
import org.neo4j.collections.graphdb.impl.EmbeddedGraphDatabase;

import org.neo4j.graphdb.GraphDatabaseService;

import org.neo4j.gis.spatial.EditableLayer;
import org.neo4j.gis.spatial.EditableLayerImpl;
import org.neo4j.gis.spatial.Layer;
import org.neo4j.gis.spatial.encoders.SimplePointEncoder;

有人能给我一些建议吗?

此外,它的2.0.1用于neo4j和用于空间的v13。

代码语言:javascript
复制
<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-spatial</artifactId>
    <version>0.13-neo4j-2.0.1</version>
</dependency>
<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j</artifactId>
    <version>2.0.1</version>
</dependency>
EN

回答 1

Stack Overflow用户

发布于 2014-05-28 00:41:21

所以这个问题的答案是你需要使用

代码语言:javascript
复制
GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase("var/geo");

而不是

代码语言:javascript
复制
GraphDatabaseService graphDb = new EmbeddedGraphDatabase("var/geo");

在幕后的某个地方,这会创建一种不同类型的嵌入式GDbS,它不会导致类类型转换异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23893398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档