Объект 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" определено более одного раза. Возможно ли, что у вашего проекта уже есть класс с тем же именем в вашем проекте? Иногда это происходит, когда вы меняете каталог, в котором вы генерируете файлы, на старые копии, которые все еще существуют.