Impossibile trovare @Nullable all'interno di javax.annotation. *


116

Voglio usare l' @Nullable annotazione per eliminare NullPointerExceptions. Ho trovato alcuni tutorial in rete, ho notato che questa annotazione proviene dal pacchetto javax.annotation.Nullable; ma quando lo importa viene generato un errore di compilazione: impossibile trovare il simbolo

Risposte:


146

Devi includere un vaso in cui esiste questa classe. Puoi trovarlo qui

Se si utilizza Maven, è possibile aggiungere la seguente dichiarazione di dipendenza:

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

e per Gradle:

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

74
Perché Google (in particolare il suo artefatto findbugs) fornisce tipi che appartengono al javaxpacchetto? Non è presente un artefatto con un javaxgroupId -prefixed che fornisce questo tipo?
Andrew Swan

9
@AndrewSwan sembra che l'autore abbia scelto il groupId di com.google.code.findbugsperché era ospitato sulla soluzione di hosting del codice di Google
matt b

2
Google-findbugs è l'implementazione di riferimento di jsr305, quindi sono autorizzati a utilizzare javax-packageName immagino.
icyerasor

33

Il manufatto è stato spostato da net.sourceforge.findbugsa

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

26

Se stai usando Gradle, potresti includere la dipendenza in questo modo:

repositories {
    mavenCentral()
}

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

1
Ho provato e ho ricevuto un errore: Impossibile trovare il metodo compile () per argomenti [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] su org.gradle.api.internal.artifacts. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
kamal

@kamal con l'esempio precedente, generalmente si presume che tu abbia applicato il 'java'(o altro) plugin che ha già creato la compileconfigurazione .
mkobit

Impossibile importare javax.annotation.Nullable; Ho jsr250-api-1.0.jar nel mio classpath. Ho anche provato ad aggiornare Maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse ha dato errori: Manufatto mancantecom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T

Finalmente ha funzionato jsr305-3.0.1.jar - qualche problema con eclipse cp. Sì, alla fine viene compilato dopo l'importazione di jar esterni in eclipse
Sam-T

Poiché il jar non è necessario in fase di esecuzione, usa compileOnly group...invece dicompile group...
Renato

7

Nel caso in cui qualcuno lo abbia durante il tentativo di compilare un progetto Android, è disponibile un'implementazione nullable alternativa in android.support.annotation.Nullable. Quindi fai attenzione a quale pacchetto hai fatto riferimento nel tuo imports.


4

Se qualcuno ha questo problema durante la creazione di un progetto Maven creato esternamente in IntelliJ IDEA, ho usato la seguente dipendenza invece della risposta:

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

L'utilizzo di questo consentirà al progetto di basarsi su IntelliJ IDEA e da solo utilizzando Maven.

Puoi trovarlo qui .


2
attenzione che non org.jetbrains:annotations:15.0fornisce . Questo potrebbe essere un problema nel caso in cui utilizzi alcuni generatori di codice come . @org.jetbrains.annotations.Nullable@javax.annotation.Generatedopenapi-generator-maven-plugin
danidemi

3

puoi aggiungere l'ultima versione di questo aggiungendo la seguente riga all'interno del tuo gradle.build.

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

2

Sto usando Guava che ha l'annotazione inclusa:

(Codice Gradle)

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

1

Nel caso di progetti Android, puoi correggere questo errore modificando il file gradle del progetto / modulo (build.gradle) come segue:

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

Per maggiori informazioni, fare riferimento qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.