【问题标题】:Object Proto already defined对象原型已经定义
【发布时间】:2018-04-20 13:01:30
【问题描述】:

我正在使用 Scala 2.11.8 并尝试添加 protobuf。

这是我的日志:

[info] Protoc 目标目录:/home/user/Git/tortle/target/src_managed/main

[info] Protoc 目标目录:/home/user/Git/tortle/target/src_managed/main

[...]

[error] /home/user/Git/tortle/target/src_managed/main/msgsp/IngInfo/IngInfo.scala:46: IngInfo 已定义为案例类 IngInfo

[错误] 最终案例类 IngInfo(

[错误] 发现 60 个错误

请问,我做错了什么?

我已经尝试了很多东西,但这个错误总是会出现:/ 谢谢。

我的 build.sbt :

libraryDependencies ++= Seq(
"com.trueaccord.scalapb"     %% "scalapb-runtime"     % "0.6.6",
"com.trueaccord.scalapb"     %% "scalapb-runtime"     % "0.6.6" % "protobuf")
PB.targets in Compile := Seq(
PB.gens.java -> (sourceManaged in Compile).value,
scalapb.gen(javaConversions = true) -> (sourceManaged in Compile).value)

我的插件.sbt

addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.18")
libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.7.1"

我的 *.proto 文件位于 src/main/protobuf 文件夹中,并像这样开始:

syntax = "proto3";
package msgsp;
message Tortle{}

【问题讨论】:

  • 你能找到IngInfo在生成的代码中的定义吗?你能编辑 protobuf 文件并删除部分,看看错误是移动还是消失?
  • 目标文件夹中生成两个文件:target/src_managed/main/msgsp/IngInfo/IngInfo.scala target/src_managed/main/msgsp/IngInfo/IngInfoProto.scala 又是她的错误:/

标签: scala sbt protocol-buffers scalapb


【解决方案1】:

首先,您的库依赖项指向版本 0.6.6,而您的编译器插件位于 0.7.1。请将您的 libraryDependencies 更新为:

libraryDependencies ++= Seq(
  "com.thesamet.scalapb"     %% "scalapb-runtime"     % "0.7.1" % "protobuf")
)

没有必要在末尾包含 scalapb-runtime 而没有 % "protobuf",因为 sbt-protoc 会自动为您添加。

如果这不能解决您的问题,请尝试查看您是否真的在 Scala 文件中多次定义了“IngInfo”。您的项目是否可能在您的项目中已经有一个同名的类?有时,当您将生成文件的目录更改为旧副本仍然存在时,会发生这种情况。

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    相关资源
    最近更新 更多