首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法编译由scrooge thrift插件生成的源代码

无法编译由scrooge thrift插件生成的源代码
EN

Stack Overflow用户
提问于 2017-08-07 11:34:06
回答 1查看 567关注 0票数 5

我的plugins.sbt是

代码语言:javascript
复制
addSbtPlugin("com.twitter" % "scrooge-sbt-plugin" % "4.8.0")

我的build.sbt是

代码语言:javascript
复制
val finagleVersion = "6.45.0"

lazy val myProject = Project("FinagleTest", file("."))
   .settings(
   name := "FinagleTest",
   version := "1.0",
   scalaVersion := "2.12.2",
   libraryDependencies ++= Seq(
      "org.apache.thrift" % "libthrift" % "0.9.2",
      "com.twitter" %% "scrooge-core" % "4.18.0" exclude("com.twitter", "libthrift"),
      "com.twitter" %% "finagle-thrift" % finagleVersion exclude("com.twitter", "libthrift"),
      "com.twitter" %% "finagle-http" % finagleVersion,
      "com.twitter" %% "finagle-core" % finagleVersion
   ),
   scroogeThriftSourceFolder in Compile := {
      val base = baseDirectory.value
      base / "src/main/thrift"
   }
)

已在src/main/thrift文件夹中创建temprature_service.thrift文件

代码语言:javascript
复制
namespace * com.foo.temprature.thrift
struct TempratureDatum {
    1: i32 celcius,
    2: i64 timestamp
}

service TempratureService {
    void add(1: TempratureDatum datum);
    double mean();
}

并使用sbt clean scrooge-gen compile进行编译

但是我得到了编译错误

代码语言:javascript
复制
[info] Compiling 5 Scala sources to /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/classes...
[error] /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/src_managed/main/com/foo/temprature/thrift/TempratureDatum.scala:481: value _equals is not a member of object scala.runtime.ScalaRunTime
[error]       _root_.scala.runtime.ScalaRunTime._equals(this, other) &&
[error]                                         ^
[error] /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/src_managed/main/com/foo/temprature/thrift/TempratureService.scala:65: type mismatch;
[error]  found   : com.twitter.finagle.Service[com.foo.temprature.thrift.TempratureService.Add.Args,com.foo.temprature.thrift.TempratureService.Add.SuccessType]
[error]     (which expands to)  com.twitter.finagle.Service[com.foo.temprature.thrift.TempratureService.Add.Args,Unit]
[error]  required: com.twitter.finagle.Service[com.foo.temprature.thrift.TempratureService.Add.Args,com.foo.temprature.thrift.TempratureService.Add.Result]
[error]           add = ThriftServiceIface(self.Add, binaryService, pf, stats),
[error]                                   ^
[error] /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/src_managed/main/com/foo/temprature/thrift/TempratureService.scala:66: type mismatch;
[error]  found   : com.twitter.finagle.Service[com.foo.temprature.thrift.TempratureService.Mean.Args,com.foo.temprature.thrift.TempratureService.Mean.SuccessType]
[error]     (which expands to)  com.twitter.finagle.Service[com.foo.temprature.thrift.TempratureService.Mean.Args,Double]
[error]  required: com.twitter.finagle.Service[com.foo.temprature.thrift.TempratureService.Mean.Args,com.foo.temprature.thrift.TempratureService.Mean.Result]
[error]           mean = ThriftServiceIface(self.Mean, binaryService, pf, stats)
[error]                                    ^
[error] /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/src_managed/main/com/foo/temprature/thrift/TempratureService.scala:248: value _equals is not a member of object scala.runtime.ScalaRunTime
[error]           _root_.scala.runtime.ScalaRunTime._equals(this, other) &&
[error]                                             ^
[error] /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/src_managed/main/com/foo/temprature/thrift/TempratureService.scala:373: value _equals is not a member of object scala.runtime.ScalaRunTime
[error]           _root_.scala.runtime.ScalaRunTime._equals(this, other) &&
[error]                                             ^
[error] /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/src_managed/main/com/foo/temprature/thrift/TempratureService.scala:524: value _equals is not a member of object scala.runtime.ScalaRunTime
[error]           _root_.scala.runtime.ScalaRunTime._equals(this, other) &&
[error]                                             ^
[error] /Users/Foo/IdeaProjects/FinagleTest/target/scala-2.12/src_managed/main/com/foo/temprature/thrift/TempratureService.scala:705: value _equals is not a member of object scala.runtime.ScalaRunTime
[error]           _root_.scala.runtime.ScalaRunTime._equals(this, other) &&
[error]                                             ^
[error] 7 errors found
EN

回答 1

Stack Overflow用户

发布于 2018-04-15 09:49:41

有趣的是,今天我正在写另一个储蓄服务,我发现了这个问题,这个问题是我一年前发布的:)

幸运的是,解决方案非常简单。

上面代码中使用的插件版本非常旧。

您可以在此处找到此插件的最新版本

https://bintray.com/twittercsl/sbt-plugins/scrooge-sbt-plugin

如果我将plugins.sbt文件更新为

代码语言:javascript
复制
addSbtPlugin("com.twitter" % "scrooge-sbt-plugin" % "18.4.0")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45539048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档