Java使用AnonymousTraversalSource连接JanusGraph失败排查
问题
为何无法连接到localhost:8182上的JanusGraph-Server?
使用环境为Java-17、TinkerPop3 Gremlin和Janusgraph:latest。
复现步骤
操作步骤
- 下载并安装Docker(Windows)
- 创建并启动JanusGraph Docker容器,执行命令
docker run -it -p 8182:8182 janusgraph/janusgraph
- 创建并运行Java-Maven项目
- 结果
- 预期:无错误,后续代码正常运行
- 实际:运行时错误:
IllegalStateException
日志信息
Exception in thread "main" java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException at org.apache.tinkerpop.gremlin.process.remote.RemoteConnection.from(RemoteConnection.java:73) at org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.withRemote(AnonymousTraversalSource.java:76) at org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.withRemote(AnonymousTraversalSource.java:66) at Main.main(Main.java:10) Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at org.apache.tinkerpop.gremlin.process.remote.RemoteConnection.from(RemoteConnection.java:71) ... 3 more Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: Could not establish serializer - org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection.<init>(DriverRemoteConnection.java:84) ... 9 more Caused by: java.lang.IllegalStateException: Could not establish serializer - org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 at org.apache.tinkerpop.gremlin.driver.Cluster.getBuilderFromSettings(Cluster.java:228) at org.apache.tinkerpop.gremlin.driver.Cluster.build(Cluster.java:173) at org.apache.tinkerpop.gremlin.driver.Cluster.open(Cluster.java:265) at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection.<init>(DriverRemoteConnection.java:80) ... 9 more Process finished with exit code 1
代码结构与内容
│ pom.xml ├───src │ ├───main │ │ ├───java │ │ │ Main.java │ │ │ │ │ └───resources │ │ │ log4j2.xml │ │ │ │ │ ├───conf │ │ │ remote-graph.properties │ │ │ remote-objects.yaml
Main.java
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal; public class Main { public static void main(String[] args) throws Exception { GraphTraversalSource g = traversal().withRemote("src/main/resources/conf/remote-graph.properties"); } }
remote-graph.properties
gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection gremlin.remote.driver.clusterFile=src/main/resources/conf/remote-objects.yaml gremlin.remote.driver.sourceName=g
remote-objects.yaml
hosts: [localhost] port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
pom.xml
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j2-impl</artifactId> <version>2.20.0</version> </dependency> <dependency> <groupId>org.apache.tinkerpop</groupId> <artifactId>gremlin-core</artifactId> <version>3.6.2</version> </dependency> <!-- <dependency>--> <!-- <groupId>org.janusgraph</groupId>--> <!-- <artifactId>janusgraph-core</artifactId>--> <!-- <version>1.0.0-20230424-065649.dcd3240</version>--> <!-- </dependency>--> <!-- https://mvnrepository.com/artifact/org.janusgraph/janusgraph-core --> <dependency> <groupId>org.janusgraph</groupId> <artifactId>janusgraph-core</artifactId> <version>0.6.4-20230429-020227.dc3f877</version> </dependency> </dependencies>
更新
感谢Marc!问题已解决!
内容的提问来源于stack exchange,提问作者Zach
相关产品推荐
相关产品推荐

