JanusGraph可添加顶点但添加属性时抛出SerializationException求助
解决JanusGraph添加带属性顶点时的SerializationException错误
问题原因
该错误是由于Gremlin Server和控制台的序列化配置未加载JanusGraph专属的IoRegistry,导致无法序列化JanusGraph内部的org.janusgraph.graphdb.relations.RelationIdentifier类型(属性关联的内部标识符)。
解决步骤
1. 修改Gremlin Server序列化配置
打开janusgraph-full-1.0.0/conf/gremlin-server/gremlin-server.yaml,找到serializers配置段,为GraphSON序列化器添加JanusGraph的IoRegistry:
原配置片段:
serializers: - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphIoRegistryV3d0] }}
修改后:
serializers: - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphIoRegistryV3d0, org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV3d0] }}
2. 修改Gremlin控制台远程连接配置
打开janusgraph-full-1.0.0/conf/remote.yaml,同样更新序列化器的IoRegistry配置:
原配置片段:
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphIoRegistryV3d0] }}
修改后:
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphIoRegistryV3d0, org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistryV3d0] }}
3. 重启服务并重新连接
- 关闭正在运行的Gremlin Server和控制台
- 重新启动Gremlin Server(执行
janusgraph-full-1.0.0\bin\gremlin-server.bat) - 重新打开Gremlin控制台(执行
janusgraph-full-1.0.0\bin\gremlin.bat),执行以下命令连接服务器:
:remote connect tinkerpop.server conf/remote.yaml :remote console
4. 重试添加带属性顶点
执行命令验证:
g.addV('person').property('name', 'Alice').property('age', 25).next()
此时应该能正常创建带属性的顶点,不再抛出序列化异常。
内容的提问来源于stack exchange,提问作者isnf-uZ4
相关产品推荐
相关产品推荐

