Impossible de trouver @Nullable dans javax.annotation. *


116

Je veux utiliser l' @Nullable annotation pour éliminer NullPointerExceptions. J'ai trouvé quelques tutoriels sur le net, j'ai remarqué que cette annotation vient du paquet javax.annotation.Nullable; mais quand je l'importe, une erreur de compilation est générée: impossible de trouver le symbole

Réponses:


146

Vous devez inclure un fichier jar dans lequel cette classe existe. Vous pouvez le trouver ici

Si vous utilisez Maven, vous pouvez ajouter la déclaration de dépendance suivante:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>jsr305</artifactId>
  <version>3.0.2</version>
</dependency>

et pour Gradle:

dependencies {
  testImplementation 'com.google.code.findbugs:jsr305:3.0.2'
}

74
Pourquoi Google (en particulier son artefact findbugs) fournit-il des types qui appartiennent au javaxpackage? N'y a-t-il pas un artefact avec un javaxgroupId préfixé qui fournit ce type?
Andrew Swan

9
@AndrewSwan, il semble que l'auteur ait choisi le groupId de com.google.code.findbugsparce qu'il était hébergé sur la solution d'hébergement de code de Google
matt b

2
Google-findbugs est l'implémentation de référence du jsr305, donc ils sont en quelque sorte autorisés à utiliser le javax-packageName je suppose.
icyerasor

33

L'artefact a été déplacé de net.sourceforge.findbugsà

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>3.0.0</version>
</dependency>

26

Si vous utilisez Gradle, vous pouvez inclure la dépendance comme ceci:

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}

1
J'ai essayé et j'ai eu l'erreur: Impossible de trouver la méthode compile () pour les arguments [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] sur org.gradle.api.internal.artifacts. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
kamal

@kamal avec l'exemple ci-dessus, cela suppose généralement que vous avez appliqué le 'java'(ou un autre) plugin qui a déjà créé la compileconfiguration .
mkobit

Impossible d'importer javax.annotation.Nullable; J'ai jsr250-api-1.0.jar dans mon chemin de classe. J'ai même essayé de mettre à jour maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse a donné des erreurs: Artefact manquantcom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T

Cela a finalement fonctionné jsr305-3.0.1.jar - un problème de cp eclipse. Oui enfin, il se compile après l'importation de jar externe dans eclipse
Sam-T

Parce que le pot n'est pas nécessaire au moment de l'exécution, utilisez compileOnly group...au lieu de justecompile group...
Renato

7

Au cas où quelqu'un aurait cela en essayant de compiler un projet Android, il existe une implémentation alternative Nullable dans android.support.annotation.Nullable. Faites donc attention au package que vous avez référencé dans votre imports.


4

Si quelqu'un a ce problème lors de la construction d'un projet Maven créé dans IntelliJ IDEA en externe, j'ai utilisé la dépendance suivante au lieu de la réponse:

<dependency>
  <groupId>org.jetbrains</groupId>
  <artifactId>annotations</artifactId>
  <version>15.0</version>
</dependency>

Son utilisation permettra au projet de s'appuyer sur IntelliJ IDEA et de lui-même en utilisant Maven.

Vous pouvez le trouver ici .


2
méfiez-vous qui ne org.jetbrains:annotations:15.0fournit @org.jetbrains.annotations.Nullablepas @javax.annotation.Generated. Cela pourrait être un problème si vous utilisez certains générateurs de code comme openapi-generator-maven-plugin.
danidemi le

3

vous pouvez ajouter la dernière version de ceci en ajoutant la ligne suivante dans votre gradle.build.

implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'

2

J'utilise Guava qui a une annotation incluse:

(Code Gradle)

compile 'com.google.guava:guava:23.4-jre'

1

Dans le cas des projets Android, vous pouvez corriger cette erreur en modifiant le fichier gradle du projet / module (build.gradle) comme suit:

dependencies { implementation 'com.android.support:support-annotations:24.2.0' }

Pour plus d'informations, veuillez consulter ici .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.