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

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'
}

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>

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'
}

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.


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í .


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'

2

Estoy usando Guava que tiene una anotación incluida:

(Código Gradle)

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

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í .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.