나는 github4 라이브러리에서 github api에 액세스하기 위해 암모나이트 스크립트를 작성 중이며 클래스 패스와 관련된 문제가있을 수 있습니다. 다음과 같이 스크립트의 간단한 버전은 다음과 같습니다Ammonite classpath가 Github4s와 충돌합니다 (AbstractMethodError)
import $ivy.`com.47deg::github4s:0.17.0`, github4s.Github, github4s.Github._, github4s.jvm.Implicits._, scalaj.http.HttpResponse
val listCommits = Github().repos.listCommits("lihaoyi", "ammonite")
listCommits.exec[cats.Id, HttpResponse[String]]() match {
case Left(e) => println(s"Something went wrong: ${e.getMessage}")
case Right(r) => r.result.foreach { commit => println(s"${commit.sha}:
${commit.message.take(35)}") }
}
그것은 거의 github4s 튜토리얼에서 복사가 실패있어
:
java.lang.AbstractMethodError
jawn.CharBasedParser.parseString(CharBasedParser.scala:90)
jawn.CharBasedParser.parseString$(CharBasedParser.scala:87)
jawn.StringParser.parseString(StringParser.scala:15)
jawn.Parser.rparse(Parser.scala:428)
jawn.Parser.parse(Parser.scala:337)
jawn.SyncParser.parse(SyncParser.scala:24)
jawn.SupportParser.$anonfun$parseFromString$1(SupportParser.scala:15)
jawn.SupportParser.parseFromString(SupportParser.scala:15)
jawn.SupportParser.parseFromString$(SupportParser.scala:14)
io.circe.jawn.CirceSupportParser$.parseFromString(CirceSupportParser.scala:7)
io.circe.jawn.JawnParser.parse(JawnParser.scala:16)
io.circe.parser.package$.parse(package.scala:8)
io.circe.Parser.decode(Parser.scala:26)
io.circe.Parser.decode$(Parser.scala:25)
io.circe.parser.package$.decode(package.scala:5)
github4s.HttpRequestBuilderExtensionJVM.decodeEntity(HttpRequestBuilderExtensionJVM.scala:89)
github4s.HttpRequestBuilderExtensionJVM.decodeEntity$(HttpRequestBuilderExtensionJVM.scala:88)
github4s.jvm.Implicits$.decodeEntity(Implicits.scala:21)
정확히 같은 코드를 만드는 간단한 SBT 프로젝트에서 작동 Ammonite가 classpath에 무엇인가를 주입한다고 생각합니다. 그리고 그것은 github4를 깨뜨 렸습니다.
암모 나트 스크립트에서 더 깨끗한 클래스 경로를 가질 수있는 방법이 있습니까? 아니면이 문제를 해결할 수있는 다른 방법은 있습니까?
문제는 'jawn-parser'입니다. github4s'0.16.0'은 jawn-parser 0.11.0이 필요한 circe (고양이 1.0)가 필요합니다. sbt 1.0에는 jawn-parser 0.10.4가 필요하며 jawn-parser 0.10.4와 0.11.0 사이에는 이진 비 호환성이 있습니다. – Fede