如何在 Scala 脚本中使用 Gremlin?

Posted

技术标签:

【中文标题】如何在 Scala 脚本中使用 Gremlin?【英文标题】:How to use Gremlin in Scala script? 【发布时间】:2017-11-22 22:30:06 【问题描述】:

我正在尝试在带有 tinkerpop 3 的 scala 脚本中使用 Janusgraph。我使用 gremlin.scala 库 (https://github.com/mpollmeier/gremlin-scala),但我收到有关 HNil 的错误(见下文)。如何在 scala 脚本和 Janusgraph 中使用 gremlin?

import gremlin.scala._
import org.apache.commons.configuration.BaseConfiguration
import org.janusgraph.core.JanusGraphFactory
import org.apache.tinkerpop.gremlin.structure.Graph

object Janus 
  def main(args: Array[String]): Unit = 
    val conf = new BaseConfiguration()
    conf.setProperty("storage.backend","inmemory")
    val graph = JanusGraphFactory.open(conf)
    val v1 = graph.graph.addV("test")
  

错误:(11, 14) 类路径中缺少符号“type scala.ScalaObject”。 'trait shapeless.HNil' 需要此符号。 确保 ScalaObject 类型在您的类路径中,并检查与 -Ylog-classpath 的冲突依赖项。 如果 'HNil.class' 是针对不兼容的 scala 版本编译的,则完全重建可能会有所帮助。 val v1 = graph.graph.addV("test")

【问题讨论】:

【参考方案1】:

不确定您所说的“scala 脚本”是什么意思,但看起来您缺少许多(全部?)依赖项。你看过https://github.com/mpollmeier/gremlin-scala-examples/ 吗?它包含 janusgraph 的示例设置。

【讨论】:

我所说的 scala 脚本是指用 scala 编写的代码。实际上,我已经使用了您的built.sbt 文件中编写的依赖项。 libraryDependencies ++= Seq( "com.michaelpollmeier" %% "gremlin-scala" % "3.2.4.15", "org.janusgraph" % "janusgraph-core" % "0.1.1", "ch.qos.logback" % "logback-classic" % "1.2.3" % Test, "org.scalatest" %% "scalatest" % "3.0.3" % Test ) 我必须离线工作,所以我已经在 maven Central 中下载了前三个依赖项存储库,我已将依赖项添加到我的项目中。 除非您共享可重现的项目设置,否则我认为我无能为力。如前所述,我建议克隆 gremlin-scala-examples 作为快速入门

以上是关于如何在 Scala 脚本中使用 Gremlin?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 mogwai 执行 gremlin 查询

如何使用 mogwai 执行 gremlin 查询

如何使用 gremlin 在两个顶点之间创建双向边?

Gremlin - 在执行下一行脚本之前等待 schema.drop() 完成

Gremlin中匿名函数的应用

Gremlin中匿名函数的应用