Tinkerpop Gremlin控制台:java.lang.NoSuchMethodError:org.apache.tinkerpop.gremlin.driver.RequestOptions $ Builder.userAgent

问题描述 投票:0回答:2

[作为我在403 Forbidden error for Gremlin to AWS Neptune的最后一个帖子,我可以通过安装在我的EC2实例上的Tinkerpop Gremlin控制台v 3.4.3成功连接到我的Neptune Cluster DB,因为https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-connecting-gremlin-console.html所建议的v 3.4.1不适用于我。


         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml
==>Configured <my neptune>.cluster-cm<cluster id>.ap-southeast-2.neptune.amazonaws.com/<private ip>:8182
gremlin> :remote console
==>All scripts will now be sent to Gremlin Server - [<my neptune>.cluster-cm<cluster id>.ap-southeast-2.neptune.amazonaws.com/<private ip>:8182] - type ':remote console' to return to local mode

但是,我在控制台上使用的所有Gremlin命令(g。)都出现NoSuchMethodError错误。

例如:g.V()

gremlin> g.V()
org.apache.tinkerpop.gremlin.driver.RequestOptions$Builder.userAgent(Ljava/lang/String;)Lorg/apache/tinkerpop/gremlin/driver/RequestOptions$Builder;
Type ':help' or ':h' for help.
Display stack trace? [yN]Y
java.lang.NoSuchMethodError: org.apache.tinkerpop.gremlin.driver.RequestOptions$Builder.userAgent(Ljava/lang/String;)Lorg/apache/tinkerpop/gremlin/driver/RequestOptions$Builder;
    at org.apache.tinkerpop.gremlin.console.jsr223.DriverRemoteAcceptor.send(DriverRemoteAcceptor.java:214)
    at org.apache.tinkerpop.gremlin.console.jsr223.DriverRemoteAcceptor.submit(DriverRemoteAcceptor.java:168)
    at org.apache.tinkerpop.gremlin.console.GremlinGroovysh.execute(GremlinGroovysh.groovy:110)
...

g.addV('person')。property('name','justin')

gremlin> g.addV('person').property('name', 'justin')
org.apache.tinkerpop.gremlin.driver.RequestOptions$Builder.userAgent(Ljava/lang/String;)Lorg/apache/tinkerpop/gremlin/driver/RequestOptions$Builder;
Type ':help' or ':h' for help.
Display stack trace? [yN]Y
java.lang.NoSuchMethodError: org.apache.tinkerpop.gremlin.driver.RequestOptions$Builder.userAgent(Ljava/lang/String;)Lorg/apache/tinkerpop/gremlin/driver/RequestOptions$Builder;
    at org.apache.tinkerpop.gremlin.console.jsr223.DriverRemoteAcceptor.send(DriverRemoteAcceptor.java:214)
    at org.apache.tinkerpop.gremlin.console.jsr223.DriverRemoteAcceptor.submit(DriverRemoteAcceptor.java:168)
    at org.apache.tinkerpop.gremlin.console.GremlinGroovysh.execute(GremlinGroovysh.groovy:110)
....

我还尝试了最新的Apache Tinkerpop Gremlin Console 3.4.6,我遇到了同样的错误...

谢谢

amazon-web-services gremlin tinkerpop3 amazon-neptune
2个回答
1
投票
[我认为您缺少的步骤是采用EC2实例的已分配IAM角色提供的临时凭据,并将这些凭据推送到Default Credential Provider链中,以使Gremlin Console使用的SigV4Channelizer可以看到它们。可以在此处查看该过程的高级概述:https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html

可以在此处找到针对Neptune的更规范的处理方式:https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-temporary-credentials.html请参阅标题为“设置Amazon EC2进行Neptune IAM身份验证”的部分。


0
投票
我只是尝试使用Gremlin控制台3.4.1,并且按预期方式工作...我认为这是由于版本不兼容所致。我正在使用Gremlin控制台3.4.6
© www.soinside.com 2019 - 2024. All rights reserved.