Não é possível encontrar @Nullable em javax.annotation. *

115

Eu quero usar @Nullable anotações para eliminar NullPointerExceptions. Encontrei alguns tutoriais na net, percebi que essa anotação vem do pacote javax.annotation.Nullable; mas quando eu o importo, um erro de compilação é gerado: não é possível encontrar o símbolo

MrSmith42
fonte

Respostas:

144

Você precisa incluir um jar no qual esta classe existe. Você pode encontrá-lo aqui

Se estiver usando o Maven, você pode adicionar a seguinte declaração de dependência:

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

e para Gradle:

dependencies {
  testImplementation 'com.google.code.findbugs:jsr305:3.0.2'
}
david99world
fonte
74
Por que o Google (especialmente seu artefato findbugs) fornece tipos que pertencem ao javaxpacote? Não existe um artefato com um javaxgroupId com prefixo que fornece esse tipo?
Andrew Swan,
9
@AndrewSwan parece que o autor escolheu o groupId de com.google.code.findbugsporque ele estava sendo hospedado na solução de hospedagem de código do Google
matt b
2
Google-findbugs é a implementação de referência do jsr305, portanto, eles têm permissão para usar o javax-packageName, eu acho.
icyerasor
33

O artefato foi movido de net.sourceforge.findbugspara

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

Se você estiver usando o Gradle, poderá incluir a dependência como esta:

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}
mkobit
fonte
1
Tentei, mas obtive um erro: Não foi possível encontrar o método compile () para os argumentos [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] em org.gradle.api.internal.artifacts. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
kamal
@kamal com o exemplo acima, geralmente assume-se que você aplicou o 'java'(ou outro) plugin que já criou a compileconfiguração .
mkobit
Não é possível importar javax.annotation.Nullable; Tenho jsr250-api-1.0.jar em meu classpath. Eu até tentei atualizar maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse deu erros: Artefato ausentecom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T
Finalmente funcionou jsr305-3.0.1.jar - algum problema de eclipse cp. Sim, finalmente ele compila após a importação do jar externo para o eclipse
Sam-T
Como o jar não é necessário em tempo de execução, use em compileOnly group...vez de apenascompile group...
Renato
7

Caso alguém tenha isso ao tentar compilar um projeto Android, há uma implementação alternativa Nullable em android.support.annotation.Nullable. Portanto, tome cuidado com o pacote que você referenciou em seus programas import.

Janis Peisenieks
fonte
4

Se alguém tiver esse problema ao construir um projeto Maven criado externamente no IntelliJ IDEA, usei a seguinte dependência em vez da resposta:

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

Usar isso permitirá que o projeto seja construído no IntelliJ IDEA e sozinho usando o Maven.

Você pode encontrar aqui .

crawton
fonte
2
cuidado que não org.jetbrains:annotations:15.0fornece . Isso pode ser um problema caso você use alguns geradores de código como . @org.jetbrains.annotations.Nullable@javax.annotation.Generatedopenapi-generator-maven-plugin
danidemi
3

você pode adicionar a versão mais recente deste adicionando a seguinte linha dentro de seu gradle.build.

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

Estou usando o Guava, que inclui a anotação:

(Código Gradle)

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

No caso de projetos Android, você pode corrigir esse erro alterando o arquivo gradle do projeto / módulo (build.gradle) da seguinte maneira:

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

Para obter mais informações, consulte aqui .

KPandian
fonte