Я не могу заставить VS Code распознать сгенерированный исходный код Java, а в терминале я не могу заставить Gradle распознать код, когда я пытаюсь использовать Gradle для создания приложения.
VS Code отображает это, когда я пытаюсь сослаться на сгенерированный код. код:

И Gradle отображает следующую ошибку, когда я пытаюсь выполнить сборку:
Код: Выделить всё
> Task :app:compileJava FAILED
/home/mattgbi/vscode-gradle-protobuf-repro/app/src/main/java/vscode/gradle/protobuf/repro/App.java:14: error: cannot find symbol
System.out.println(Person.class);
^
symbol: class Person
location: class App
1 error
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileJava'.
> Compilation failed; see the compiler error output for details.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 405ms
4 actionable tasks: 1 executed, 3 up-to-date
Однако, если я вручную ввожу оператор импорта, VS Code сообщает, что не может его найти.:

Однако на этом этапе Gradle может использовать оператор импорта (даже несмотря на то, что VS Code выдает ошибки) и может завершить сборку:
Код: Выделить всё
> ./gradlew build
> Task :app:compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
BUILD SUCCESSFUL in 1s
13 actionable tasks: 10 executed, 3 up-to-date
Вот шаги, которые я выполнил, чтобы столкнуться с этой проблемой:
- Создайте проект с gradle init. Выберите «приложение» и оставьте все настройки по умолчанию.
- Следуйте инструкциям на странице https://github.com/google/protobuf-gradle-plugin, чтобы добавить плагин в мой проект. Добавьте часть «buildscript» в начало файла build.gradle над частью плагинов файла. Добавьте строку внутри части плагинов с идентификатором «com.google.protobuf» версии «0.8.18» под идентификатором строки «application» в этой части. Добавьте блок, начинающийся с protobuf {, в конец файла, чтобы я мог загрузить Gradle и использовать собственный двоичный файл protoc.
- Следуйте руководству по Java для Protobuf (https://developers.google.com/protocol- ... vatutorial), добавьте код с сообщением Person { в верхней части страницы в мое приложение в новом файле. app/src/main/proto/message.proto.
- Сборка с помощью ./gradlew build в терминале VS Code.
- Наблюдайте за исходным кодом, сгенерированным в app/build/generated/source, хотя в консоли были ошибки, сообщающие, что пакет com.google.protobuf не существует.
- Добавить зависимость protobuf-java (из https://mvnrepository.com/artifact/com. ... tobuf-java) в файл build.gradle в разделе зависимостей файла, чтобы мои приложения, сгенерированные исходным кодом Java, могли ссылаться на библиотеку Protobuf. Выбрал версию 3.21.1, потому что на данный момент это последняя версия. Добавлено использование синтаксиса реализации.
- Снова создайте приложение с помощью ./gradlew build в терминале VS Code. На этот раз в терминале ошибок не обнаружено.
- Попробуйте написать исходный код в App.java (в разделе src), который ссылается на сгенерированный класс Person. VS Code не может его найти.
- Попытайтесь снова собрать приложение с помощью ./gradlew build в терминале VS Code. Gradle также не может найти исходный код.
- Вручную добавьте оператор импорта в App.java. Обратите внимание, что VS Code отображает ошибки о том, что пакет все еще не найден.
- Попытайтесь собрать приложение еще раз с помощью ./gradlew build в терминале VS Code. Gradle также не может найти исходный код. На этот раз Gradle преуспел. Единственная оставшаяся проблема заключается в том, как IDE распознает весь код (желательно, чтобы весь код, включая сгенерированный, распознавался).
Подробнее здесь: https://stackoverflow.com/questions/724 ... the-gradle
Мобильная версия