Janus Graph Remote Graph NoSuchFieldError: ошибка V3_0

Я следую этому примеру;

https://github.com/JanusGraph/janusgraph/tree/master/janusgraph-examples/example-remotegraph

и я хотел бы отладить этот проект, я настроил (HBase + Solr) и запустил сервер Janus Graph с

$ JANUSGRAPH_HOME / bin / gremlin-server.sh $ JANUSGRAPH_HOME / conf / gremlin-server / gremlin-server.yaml

команда. Я передал этот аргумент в IDEA через Run Configuration> Program Arguments.

[Главная страница проекта] /conf/jgex-remote.properties

мой файл jgex-remote.properties:

gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
# cluster file has the remote server configuration
gremlin.remote.driver.clusterFile=[Project Home]/conf/remote-objects.yaml
# source name is the global graph traversal source defined on the server
gremlin.remote.driver.sourceName=g 

и мой файл remote-objects.yaml включает:

hosts: [127.0.0.1]
port: 8182
serializer: {
    className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0,
    config: {
        ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry]
    }
}

Он пытается запустить эту команду:

cluster = Cluster.open(conf.getString("gremlin.remote.driver.clusterFile"));

И выбрасывает это исключение:

Исключение в потоке "main" java.lang.NoSuchFieldError: V3_0 в org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0. (GryoMessageSerializerV3d0.java:41) в org.apache.tinkerpop. simpleInstance (Serializers.java:77) в org.apache.tinkerpop.gremlin.driver.Cluster $ Builder. (Cluster.java:472) в org.apache.tinkerpop.gremlin.driver.Cluster $ Builder. (Cluster.java: 469) на org.apache.tinkerpop.gremlin.driver.Cluster.getBuilderFromSettings (Cluster.java:167) на org.apache.tinkerpop.gremlin.driver.Cluster.build (Cluster.java:159) на org.apache.tinkerpop .gremlin.driver.Cluster.open (Cluster.java:233) в com.ets.dataplatform.init.RemoteGraphApp.openGraph (RemoteGraphApp.java:72) в com.ets.dataplatform.init.GraphApp.runApp (GraphApp.java : 290) на com.ets.dataplatform.init.RemoteGraphApp.main (RemoteGraphApp.java:195)

Для меня это не имеет значения.

Заранее спасибо.


person msertacturkel    schedule 12.06.2018    source источник
comment
Вы уверены, что используете конфигурацию remote-objects.yaml для создания Cluster? Исключение говорит о том, что он пытается использовать GryoMessageSerializerV3d0, но ваша конфигурация содержит GryoMessageSerializerV1d0. Я не думаю, что JanusGraph поддерживает Gryo V3, поэтому вам действительно стоит убедиться, что вы используете более раннюю версию.   -  person Florian Hockmann    schedule 13.06.2018
comment
Привет, @ florian-hockmann, спасибо за ваш комментарий. Да, выражение conf.getString (gremlin.remote.driver.clusterFile) получает правильный файл remote-objects.yaml. Как вы сказали, он включает GryoMessageSerializerV1d0, но получение ошибки от GryoMessageSerializerV3d0 для меня не имеет смысла.   -  person msertacturkel    schedule 13.06.2018


Ответы (1)


Я бы попробовал согласовать ваши версии. Я предполагаю, что вы используете JanusGraph 0.2.0. Если вы посмотрите на pom.xml для этой версии, вы увидите, что она привязана к TinkerPop 3.2.6:

https://github.com/JanusGraph/janusgraph/blob/v0.2.0/pom.xml#L68

Перейдите на эту версию в своем приложении и посмотрите, работает ли соединение. Такой подход должен не только решить вашу проблему, но и гарантировать, что вы не столкнетесь с другими несовместимостями. Это не означает, что вы не можете настроить более поздние версии TinkerPop для работы с 3.2.6, но для этого требуется немного больше настроек, и вы должны знать о незначительных изменениях, которые могут повлиять на поведение определенных операций.

person stephen mallette    schedule 15.06.2018