No puedo encontrar @Nullable dentro de javax.annotation. *

116

Quiero usar la @Nullable anotación para eliminar NullPointerExceptions. Encontré algunos tutoriales en la red, noté que esta anotación viene del paquete javax.annotation.Nullable; pero cuando lo importo se genera un error de compilación: no puedo encontrar el símbolo

MrSmith42
fuente

Respuestas:

146

Debe incluir un frasco en el que exista esta clase. Puede encontrarlo aquí

Si usa Maven, puede agregar la siguiente declaración de dependencia:

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

y para Gradle:

dependencies {
  testImplementation 'com.google.code.findbugs:jsr305:3.0.2'
}
david99world
fuente
74
¿Por qué Google (especialmente su artefacto findbugs) proporciona tipos que pertenecen al javaxpaquete? ¿No hay un artefacto con un javaxgroupId con prefijo que proporciona este tipo?
Andrew Swan
9
@AndrewSwan parece que el autor eligió el groupId de com.google.code.findbugsporque estaba alojado en la solución de alojamiento de código de Google
matt b
2
Google-findbugs es la implementación de referencia de jsr305, por lo que se les permite usar javax-packageName, supongo.
icyerasor
33

El artefacto se ha movido de net.sourceforge.findbugsa

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

Si está utilizando Gradle, podría incluir la dependencia de esta manera:

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}
mkobit
fuente
1
Lo intenté y obtuve el error: No se pudo encontrar el método compile () para los argumentos [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] en org.gradle.api.internal.artifacts. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
Kamal
@kamal con el ejemplo anterior, generalmente se asume que ha aplicado el 'java'(u otro) complemento que ya ha creado la compileconfiguración .
mkobit
No se puede importar javax.annotation.Nullable; Tengo jsr250-api-1.0.jar en mi classpath. Incluso intenté actualizar maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse dio errores: Falta un artefactocom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T
Finalmente funcionó jsr305-3.0.1.jar - algún problema de eclipse cp. Sí, finalmente se compila después de la importación de jar externo en eclipse
Sam-T
Debido a que el jar no es necesario en tiempo de ejecución, utilícelo en compileOnly group...lugar de solocompile group...
Renato
7

En caso de que alguien tenga esto mientras intenta compilar un proyecto de Android, existe una implementación alternativa que admite valores nulos en android.support.annotation.Nullable. Así que tenga cuidado a qué paquete ha hecho referencia en su imports.

Janis Peisenieks
fuente
4

Si alguien tiene este problema al construir un proyecto Maven creado en IntelliJ IDEA externamente, usé la siguiente dependencia en lugar de la respuesta:

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

Usar esto permitirá que el proyecto se base en IntelliJ IDEA y por sí mismo usando Maven.

Puedes encontrarlo aquí .

Crawton
fuente
2
cuidado que no org.jetbrains:annotations:15.0proporciona . Esto podría ser un problema en caso de que use algunos generadores de código como . @org.jetbrains.annotations.Nullable@javax.annotation.Generatedopenapi-generator-maven-plugin
danidemi
3

puede agregar la última versión de esto agregando la siguiente línea dentro de su gradle.build.

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

Estoy usando Guava que tiene una anotación incluida:

(Código Gradle)

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

En el caso de los proyectos de Android, puede corregir este error cambiando el archivo gradle del proyecto / módulo (build.gradle) de la siguiente manera:

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

Para obtener más información, consulte aquí .

KPandian
fuente