Объект Proto уже определен

Я использую 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

[...]

[ошибка] /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)

Мои плагины

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{}

2 ответа

Несмотря на то, что вопрос немного устарел, но хотел ответить, так как эта проблема все еще создает проблемы, но точный ответ отсутствует.

Эта проблема возникает из-за некоторых внутренних тонкостей IDE, которые мы используем.

В случае, если вы используете IntelliJ, вам необходимо удалить сгенерированные исходные папки, как показано на изображении ниже, после очистки и компиляции.

Структура проекта -> Модули -> Удалить отмеченные папки -> Применить -> ОК -> Повторить

Во-первых, ваши библиотечные зависимости указывают на версию 0.6.6, а ваш компилятор - на 0.7.1. Пожалуйста, обновите вашу библиотеку. Зависимости:

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

Там нет необходимости включать scalapb-runtime без % "protobuf" в конце, так как это автоматически добавляется для вас sbt-protoc.

Если это не решит вашу проблему, попробуйте проверить, действительно ли в ваших файлах Scala "IngInfo" определено более одного раза. Возможно ли, что у вашего проекта уже есть класс с тем же именем в вашем проекте? Иногда это происходит, когда вы меняете каталог, в котором вы генерируете файлы, на старые копии, которые все еще существуют.

Другие вопросы по тегам