Проблема
IntelliJ распознает файлы буферов протокола, но они не являются Java, поэтому компилятор Java не знает, что с ними делать.
Решение с Maven
Вы можете скомпилировать эти буферы протокола в файлы Java, и это шаг, который вам сейчас не хватает. Наилучший из известных мне способов - использовать для этого плагин Maven.
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.11.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>3.0.0</protocVersion> <!-- 2.4.1, 2.5.0, 2.6.1, 3.0.0 -->
<includeDirectories>
<include>src/main/resources/protobuf</include>
</includeDirectories>
<inputDirectories>
<include>src/main/resources/protobuf/</include>
</inputDirectories>
</configuration>
</execution>
</executions>
</plugin>
И зависимость для классов буфера протокола:
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.11.4</version>
</dependency>
С помощью этого плагина Intellij найдет созданные классы Java после первоначального создания источников. Таким образом, в системе управления версиями должны находиться только ваши файлы буфера протокола. Вы позволяете плагину позаботиться о компиляции в Java.
После создания классов Java вы можете использовать их в остальной части вашего кода. Вы даже можете просматривать сгенерированные классы Java в папке target / generated-sources в своем проекте Maven.
Вот как выглядит сопоставление буферов протокола и Java:
DistanceWalked.proto
package example;
message DistanceWalked {
string userId = 1;
double distance = 2;
}
DistanceWalkedOuterClass.DistanceWalked.java (сгенерировано)
package example;
public class DistanceWalked {
//properties This class isn't pretty...
}
(Полный пример кода с буферами протокола и плагином Maven можно найти здесь: https://github.com/TomCools/protocol-buffers-example)
Ссылка на источник плагина: https://github.com/os72/protoc-jar-maven-plugin
Решение без Maven
Без Maven вам необходимо загрузить компилятор командной строки. Документацию по этому поводу можно найти здесь: https://developers.google.com/protocol-buffers/docs/javatutorial#compiling-your-protocol-buffers.
person
Tom Cools
schedule
17.04.2020