redhat-developer / redhat-developer/vscode-java
Importing package from non-transitively exposed dependency in Gradle project does not display error
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 2.3k
- Forks
- 546
- Merge moyen
- 20 h 1 min
- PR mergées (30 j)
- 11
Description
Gradle enables Java library authors to specify what dependencies should be transitively exposed to a consumer using the api or implementation configurations in the dependencies section of the library's build script. When a Gradle application project attempts to use a class from a transitive dependency of a library that has declared that dependency non-transitively exposed (using implementation), the gradle build command fails at the import declaration as expected, but this extension reports no errors in VS Code likely because it sees the dependency on the classpath and ignores its transitive visibility setting. This extension will also provide hinting and code completion for a non-transitively exposed library, which shouldn't be happening.
Environment
- Operating System: macOS/Docker ARM64
- JDK version: OpenJDK Runtime Environment Corretto-21.0.4.7.1
- Visual Studio Code version: 1.91.1 (through code-server)
- Java extension version: 1.33.0 (through OpenVSX)
Steps To Reproduce
- Download the reproduction project.
- Open
Test.javain VS Code and observe no compilation errors reported by this language server extension. - Run
gradle build, which will fail, and observe the compilation errors due toTest.javaattempting to access the class of a non-transitively exposed dependency (com.google.common.base.Preconditionsin the example) of thealpaca-javalibrary.
Reproduction project: workspace.zip
Logs: Log.txt (nothing out of the ordinary)
Current Result
VS Code shows no errors:
Expected Result
IntelliJ does show errors:
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le workspace.zip joint, ouvrez Test.java et exécutez gradle build afin de comparer ses erreurs de compilation avec les diagnostics du serveur de langage. Lisez la configuration des dépendances Gradle et Log.txt, puis suivez la gestion de la visibilité des dépendances afin que l’import Guava inaccessible produise une erreur et ne reçoive ni suggestions ni complétion.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java, vscode
- Domaine
- build-system, devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 35/100