Blazegraph INSERT DATA вылетает из-за NoSuchMethodError

В Blazegraph я попытался выполнить следующий запрос:

INSERT DATA {
    <http://my.site/User/instances/1>
    :comment
    <http://my.site/Comment/instances/16>.
}

и происходит сбой со следующей трассировкой исключения:

java.lang.NoSuchMethodError: com.bigdata.rdf.sail.sparql.SPARQLStarUpdateDataBlockParser.read()I
    at com.bigdata.rdf.sail.sparql.SPARQLStarUpdateDataBlockParser.checkSparqlStarSyntax(SPARQLStarUpdateDataBlockParser.java:107)
    at com.bigdata.rdf.sail.sparql.SPARQLStarUpdateDataBlockParser.parseValue(SPARQLStarUpdateDataBlockParser.java:100)
    at org.openrdf.rio.trig.TriGParser.parseGraph(TriGParser.java:158)
    at org.openrdf.repository.sail.helpers.SPARQLUpdateDataBlockParser.parseGraph(SPARQLUpdateDataBlockParser.java:87)
    at org.openrdf.rio.trig.TriGParser.parseStatement(TriGParser.java:128)
    at org.openrdf.rio.turtle.TurtleParser.parse(TurtleParser.java:214)
    at com.bigdata.rdf.sail.sparql.UpdateExprBuilder.doUnparsedQuadsDataBlock(UpdateExprBuilder.java:746)
    at com.bigdata.rdf.sail.sparql.UpdateExprBuilder.visit(UpdateExprBuilder.java:161)
    at com.bigdata.rdf.sail.sparql.UpdateExprBuilder.visit(UpdateExprBuilder.java:119)
    at com.bigdata.rdf.sail.sparql.ast.ASTInsertData.jjtAccept(ASTInsertData.java:23)
    at com.bigdata.rdf.sail.sparql.Bigdata2ASTSPARQLParser.parseUpdate2(Bigdata2ASTSPARQLParser.java:289)
    at com.bigdata.rdf.sail.BigdataSailRepositoryConnection.prepareNativeSPARQLUpdate(BigdataSailRepositoryConnection.java:278)
    at com.bigdata.rdf.sail.BigdataSailRepositoryConnection.prepareUpdate(BigdataSailRepositoryConnection.java:182)
    at org.openrdf.repository.base.RepositoryConnectionBase.prepareUpdate(RepositoryConnectionBase.java:180)

Однако обычные DELETE INSERT WHERE запросы работают нормально.

Есть идеи, как решить?


person Navigateur    schedule 05.05.2017    source источник
comment
java.lang.NoSuchMethodError обычно означает, что в вашем проекте есть несколько версий одной и той же библиотеки. Пожалуйста, проверьте *.jar файлы в пути к классам.   -  person UninformedUser    schedule 05.05.2017
comment
Нет, я определенно проверил, нет ли кратных: у меня есть только одна запись относительно единственной соответствующей библиотеки зависимостей в моем build.gradle: compile group: 'com.blazegraph', name: 'bigdata-core', version: '2.1.4' и все. Ни в одной из моих зависимостей нет НИЧЕГО, относящегося к bigdata или blazegraph. Следовательно, он должен просто работать.   -  person Navigateur    schedule 05.05.2017
comment
Ну и я уверен, что конфликт есть. Например, вы используете OpenRDF Sesame, верно? И я предполагаю, что существует конфликт между версией, поддерживаемой Blazegraph, и той, которую вы используете. Blazegraph 2.1.4 использует Sesame 2.7.12 (см. central.maven.org/maven2/com/blazegraph/blazegraph-parent/2.1.4/) - и вы, вероятно, используете другую версию   -  person UninformedUser    schedule 05.05.2017
comment
Хорошо, спасибо, я изменю свою версию Sesame на 2.7.12 и посмотрю, работает ли она. Это то, что вы имели ввиду? Я дам вам знать, как только попробую.   -  person Navigateur    schedule 05.05.2017
comment
Оно работает! Ты звезда. Если вы можете поставить ответ, я проголосую за него и помечу его как ответ. Я использовал Sesame 2.8.6. Хотя в пути к классам не было нескольких банок кунжута как таковых (только 2.8.6), изменение 2.8.6 на 2.7.12 устранило проблему. Удаление записи gradle для sesame-runtime в целом также устранило проблему, потому что bigdata-core включает sesame-runtime, поэтому я это сделал. Спасибо!   -  person Navigateur    schedule 05.05.2017
comment
Что ж, вы также можете дать ответ, если хотите. Думаю, вы лучше меня можете описать проблему и ее решение. Это может помочь другим людям. Тогда не забудьте принять свой ответ! Рад слышать, что теперь это работает. Удачи в дальнейшем проекте!   -  person UninformedUser    schedule 06.05.2017


Ответы (1)


Просто удалил следующую строку в моем build.gradle:

compile('org.openrdf.sesame:sesame-runtime:2.8.6')

и обновленные зависимости. Вам просто не нужно объявлять зависимость Sesame, если вы используете bigdata-core, поскольку Sesame уже является ее дочерней зависимостью.

Причина сбоя заключалась в том, что ядро ​​bigdata-core полагается на Sesame версии 2.7.12, которое было заменено моим объявлением 2.8.6, в котором нет реализации вызываемого метода и, следовательно, сбоя.

Спасибо @AKSW за руководство по этому решению.

person Navigateur    schedule 06.05.2017