Ich kann VS Code nicht dazu bringen, den generierten Java-Quellcode zu erkennen, und im Terminal kann ich Gradle auch nicht dazu bringen, den Code zu erkennen, wenn ich versuche, Gradle zum Erstellen der Anwendung zu verwenden.
VS Code zeigt dies an, wenn ich versuche, auf den generierten Code zu verweisen Code:

Und Gradle zeigt den folgenden Fehler an, wenn ich versuche, einen Build durchzuführen:
Code: Select all
> 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
Wenn ich jedoch die Importanweisung manuell eingebe, sagt VS Code, dass es sie nicht finden kann.:

Zu diesem Zeitpunkt kann Gradle jedoch die Importanweisung verwenden (auch wenn VS Code Fehler gerendert hat) und den Build abschließen:
Code: Select all
> ./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
Hier sind die Schritte, die ich ausgeführt habe, um dieses Problem zu beheben:
- Projekt mit Gradle Init erstellen. Wählen Sie „Anwendung“ und belassen Sie alle Einstellungen als Standard.
- Folgen Sie den Anweisungen unter https://github.com/google/protobuf-gradle-plugin, um das Plugin zu meinem Projekt hinzuzufügen. Fügen Sie den Teil „buildscript“ oben in der Datei build.gradle und über dem Teil „plugins“ der Datei hinzu. Fügen Sie innerhalb des Plugins-Teils eine Zeile mit der ID „com.google.protobuf“ Version „0.8.18“ unterhalb der Zeilen-ID „application“ in diesem Teil hinzu. Fügen Sie am Ende der Datei einen Block hinzu, der mit protobuf { beginnt, damit ich Gradle seine eigene Protobuf-Binärdatei herunterladen und verwenden kann.
- Folgen Sie dem Java-Tutorial für Protobuf (https://developers.google.com/protocol- ... vatutorial) und fügen Sie meiner Anwendung in der neuen Datei den Code mit der Meldung Person { oben auf der Seite hinzu app/src/main/proto/message.proto.
- Erstellen Sie mit ./gradlew build im VS Code-Terminal.
- Beobachten Sie den in app/build/generated/source generierten Quellcode, obwohl es in der Konsole Fehler gab, die besagten, dass das Paket com.google.protobuf nicht existiert.
- Abhängigkeit protobuf-java hinzufügen (von https://mvnrepository.com/artifact/com. ... tobuf-java) in die Datei build.gradle im Abschnitt dependencies der Datei, damit der von meinen Anwendungen generierte Java-Quellcode auf die Protobuf-Bibliothek verweisen kann. Wählen Sie Version 3.21.1, da es sich derzeit um die neueste Version handelt. Mit Implementierungssyntax hinzugefügt.
- Erstellen Sie die Anwendung erneut mit ./gradlew build im VS Code-Terminal. Diesmal wurden keine Fehler im Terminal beobachtet.
- Versuchen Sie, Quellcode in App.java (unter src) zu schreiben, der auf die generierte Person-Klasse verweist. VS Code kann es nicht finden.
- Versuchen Sie erneut, die Anwendung mit ./gradlew build im VS Code-Terminal zu erstellen. Gradle kann den Quellcode auch nicht finden.
- Importanweisung manuell zu App.java hinzufügen. Beachten Sie, dass VS Code Fehlermeldungen anzeigt, dass das Paket immer noch nicht gefunden werden kann.
- Versuchen Sie erneut, die Anwendung mit ./gradlew build im VS Code-Terminal zu erstellen. Gradle kann den Quellcode auch nicht finden. Diesmal gelingt es Gradle. Das einzige verbleibende Problem ist, wie die IDE den gesamten Code erkennt (erwünscht ist, dass der gesamte Code, einschließlich des generierten Codes, erkannt wird).
Mobile version