加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 无法编译scrooge thrift插件生成的源代码

发布时间:2020-12-16 19:24:03 所属栏目:安全 来源:网络整理
导读:我的plugins.sbt是 addSbtPlugin("com.twitter" % "scrooge-sbt-plugin" % "4.8.0") 我的build.sbt是 val finagleVersion = "6.45.0"lazy val myProject = Project("FinagleTest",file(".")) .settings( name := "FinagleTest",version := "1.0",scalaVersio
我的plugins.sbt是

addSbtPlugin("com.twitter" % "scrooge-sbt-plugin" % "4.8.0")

我的build.sbt是

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","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文件

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编译编译

但我得到编译错误

[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,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

解决方法

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

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

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

你可以在这里找到这个插件的最新版本

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

如果我将plugins.sbt文件更新为,问题将得到解决

addSbtPlugin("com.twitter" % "scrooge-sbt-plugin" % "18.4.0")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读