Проблема
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>
И зависимость для классов Protocol Buffer:
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.11.4</version>
</dependency>
С помощью этого плагина Intellij найдет созданный Java классов, после первоначального создания источников. Таким образом, только ваши файлы протокола буфера должны быть в Source Control. Вы позволяете плагину позаботиться о компиляции до Java.
После создания классов Java вы можете использовать их в остальной части своего кода. Вы даже можете просмотреть сгенерированные классы Java в папке target / generate-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