【问题标题】:Blazegraph INSERT DATA crashes with NoSuchMethodErrorBlazegraph INSERT DATA 因 NoSuchMethodError 而崩溃
【发布时间】:2017-05-05 06:53:33
【问题描述】:

在 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 查询工作正常。

有什么解决办法吗?

【问题讨论】:

  • java.lang.NoSuchMethodError 通常表示您的项目中有同一个库的多个版本。请检查类路径中的*.jar 文件。
  • 不,我确实检查过没有倍数:我的 build.gradle 中只有一个与唯一相关依赖库相关的条目:compile group: 'com.blazegraph', name: 'bigdata-core', version: '2.1.4' 就是这样。在我的任何依赖项中,都没有其他与大数据或 blazegraph 相关的内容。因此,它应该可以正常工作。
  • 好吧,我确定存在冲突。例如,您使用的是 OpenRDF Sesame,对吗?而且我猜 Blazegraph 支持的版本和您正在使用的版本之间存在冲突。 Blazegraph 2.1.4 使用 Sesame 2.7.12(请参阅 central.maven.org/maven2/com/blazegraph/blazegraph-parent/2.1.4/…) - 您可能使用的是其他版本
  • 好的,谢谢,我将更改我的 Sesame 版本以匹配 2.7.12,看看它是否有效。你是这个意思吗?我一试过就会通知你。
  • 有效!你是个明星。如果您可以提出答案,我会投票并将其标记为已回答。我使用的是芝麻 2.8.6。虽然类路径中没有多个芝麻罐(只有 2.8.6),但将 2.8.6 更改为 2.7.12 解决了这个问题。完全删除 sesame-runtime 的 gradle 条目也解决了这个问题,因为 bigdata-core 包含 sesame-runtime,所以我已经这样做了。谢谢!

标签: sparql blazegraph


【解决方案1】:

只需在我的 build.gradle 中删除以下行:

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

并刷新了依赖项。如果您使用的是 bigdata-core,则根本不需要声明 Sesame 依赖项,因为 Sesame 已经是它的子依赖项。

崩溃的原因是 bigdata-core 依赖于 Sesame 版本 2.7.12,它被我的 2.8.6 声明所取代,它没有调用方法的实现,因此崩溃了。

感谢 @AKSW 提供此解决方案背后的指导。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2013-03-09
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多