@Nullable kann in javax.annotation nicht gefunden werden. *

114

Ich möchte @Nullable Anmerkungen verwenden, um zu beseitigen NullPointerExceptions. Ich habe einige Tutorials im Internet gefunden und festgestellt, dass diese Anmerkung aus dem Paket stammt javax.annotation.Nullable. Beim Importieren wird jedoch ein Kompilierungsfehler generiert: Symbol kann nicht gefunden werden

MrSmith42
quelle

Antworten:

143

Sie müssen ein Glas einschließen, in dem diese Klasse vorhanden ist. Sie finden es hier

Wenn Sie Maven verwenden, können Sie die folgende Abhängigkeitsdeklaration hinzufügen:

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

und für Gradle:

dependencies {
  testImplementation 'com.google.code.findbugs:jsr305:3.0.2'
}
david99world
quelle
73
Warum bietet Google (insbesondere das Findbugs-Artefakt) Typen an, die zum javaxPaket gehören? Gibt es nicht ein Artefakt mit einer javaxvorfixierten Gruppen-ID, die diesen Typ bereitstellt?
Andrew Swan
9
@ AndrewSwan Es scheint, dass der Autor die groupId von ausgewählt hat, com.google.code.findbugsweil sie auf Googles Code-Hosting-Lösung gehostet wurde
matt b
2
Google-findbugs ist die Referenzimplementierung des jsr305, daher dürfen sie den javax-packageName verwenden, denke ich.
icyerasor
32

Das Artefakt wurde von net.sourceforge.findbugsnach verschoben

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

Wenn Sie Gradle verwenden, können Sie die Abhängigkeit wie folgt einschließen:

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}
mkobit
quelle
1
Ich habe es versucht und eine Fehlermeldung erhalten: Die Methode compile () für Argumente [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] auf org.gradle.api.internal.artifacts konnte nicht gefunden werden. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
Kamal
Bei @kamal mit dem obigen Beispiel wird im Allgemeinen davon ausgegangen, dass Sie das 'java'(oder ein anderes) Plugin angewendet haben, das die compileKonfiguration bereits erstellt hat .
mkobit
Javax.annotation.Nullable kann nicht importiert werden. Ich habe jsr250-api-1.0.jar in meinem Klassenpfad. Ich habe sogar versucht, Maven Pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse zu aktualisieren, gab Fehler: Fehlendes Artefaktcom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T
Es funktionierte schließlich jsr305-3.0.1.jar - ein Eclipse-CP-Problem. Ja, endlich wird es nach dem Import eines externen JARs in Eclipse kompiliert
Sam-T
Da das Glas zur Laufzeit nicht benötigt wird, verwenden Sie compileOnly group...statt nurcompile group...
Renato
7

Falls jemand dies hat, während er versucht, ein Android-Projekt zu kompilieren, gibt es eine alternative Nullable-Implementierung in android.support.annotation.Nullable. Achten Sie also darauf, auf welches Paket Sie in Ihrem imports verwiesen haben .

Janis Peisenieks
quelle
4

Wenn jemand dieses Problem hat, wenn er ein extern in IntelliJ IDEA erstelltes Maven-Projekt erstellt, habe ich anstelle der Antwort die folgende Abhängigkeit verwendet:

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

Auf diese Weise kann das Projekt auf IntelliJ IDEA aufbauen und Maven selbst verwenden.

Sie finden es hier .

Crawton
quelle
2
Vorsicht, das org.jetbrains:annotations:15.0bietet @org.jetbrains.annotations.Nullablenicht @javax.annotation.Generated. Dies kann ein Problem sein, wenn Sie einige Codegeneratoren als verwenden openapi-generator-maven-plugin.
Danidemi
3

Sie können die neueste Version hinzufügen, indem Sie die folgende Zeile in gradle.build einfügen.

implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
Jay Dangar
quelle
2

Ich verwende Guava mit Anmerkungen:

(Gradle-Code)

compile 'com.google.guava:guava:23.4-jre'
John Tribe
quelle
1

Bei Android-Projekten können Sie diesen Fehler beheben, indem Sie die Projekt- / Modul-Gradle-Datei (build.gradle) wie folgt ändern:

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

Weitere Informationen finden Sie hier .

KPandian
quelle