Javax.annotation içinde @Nullable bulunamıyor. *


116

@Nullable Ortadan kaldırmak için ek açıklamayı kullanmak istiyorum NullPointerExceptions. İnternette bazı dersler buldum, bu açıklamanın paketten geldiğini fark ettim javax.annotation.Nullable; ama onu içe aktardığımda bir derleme hatası üretiliyor: sembol bulunamıyor

Yanıtlar:


146

Bu sınıfın içinde bulunduğu bir kavanoz eklemeniz gerekiyor. Burada bulabilirsiniz

Maven kullanıyorsanız, aşağıdaki bağımlılık bildirimini ekleyebilirsiniz:

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

ve Gradle için:

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

74
Google (özellikle findbugs yapısı) neden javaxpakete ait türleri sağlıyor ? javaxBu türü sağlayan ön ekli bir groupId'ye sahip bir yapı yok mu?
Andrew Swan

9
@AndrewSwan, yazarın groupId'i com.google.code.findbugsGoogle'ın kod barındırma çözümünde barındırıldığı için seçtiği anlaşılıyor
matt b

2
Google-findbugs jsr305'in referans uygulamasıdır, bu yüzden sanırım javax-packageName'i kullanmalarına izin verilir.
icyerasor

33

Eser taşındı net.sourceforge.findbugsiçin

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

26

Gradle kullanıyorsanız, aşağıdaki gibi bağımlılığı dahil edebilirsiniz:

repositories {
    mavenCentral()
}

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

1
Denedim ve hata aldım: org.gradle.api.internal.artifacts üzerinde argümanlar [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] için compile () yöntemi bulunamadı. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
kamal

@kamal yukarıdaki örnekte, genellikle yapılandırmayı'java' zaten oluşturmuş olan (veya başka bir) eklentiyi uyguladığınızı varsayar . compile
mkobit

Javax.annotation.Nullable içe aktarılamıyor; Sınıf yolumda jsr250-api-1.0.jar var. Maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse'i güncellemeyi denedim bile hatalar verdi: Eksik yapıcom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T

Sonunda jsr305-3.0.1.jar - bazı tutulma cp sorunu - çalıştı. Evet, sonunda tutulmaya harici kavanoz aktarıldıktan sonra derleniyor
Sam-T

Kavanoz çalışma zamanında gerekli olmadığından compileOnly group..., sadece yerine kullanıncompile group...
Renato

7

Bir Android projesini derlemeye çalışırken birinin buna sahip olması durumunda, .tml uygulamasında alternatif bir Nullable uygulaması vardır android.support.annotation.Nullable. Bu nedenle, e-postalarınızda hangi paketi referans aldığınıza dikkat edin import.


4

IntelliJ IDEA'da harici olarak oluşturulmuş bir Maven projesi oluştururken bu sorunu yaşayan biri varsa, yanıt yerine aşağıdaki bağımlılığı kullandım:

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

Bunu kullanmak, projenin IntelliJ IDEA üzerine ve kendi başına Maven kullanarak inşa etmesine izin verecektir.

Burada bulabilirsiniz .


2
sakının org.jetbrains:annotations:15.0sağlar @org.jetbrains.annotations.Nullabledeğil @javax.annotation.Generated. Bazı kod oluşturucuları olarak kullanmanız durumunda bu bir sorun olabilir openapi-generator-maven-plugin.
danidemi

3

gradle.build'inizin içine aşağıdaki satırı ekleyerek bunun son sürümünü ekleyebilirsiniz.

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

2

Ek açıklama içeren Guava kullanıyorum:

(Gradle kodu)

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

1

Android projeleri söz konusu olduğunda, proje / modül gradle dosyasını (build.gradle) aşağıdaki gibi değiştirerek bu hatayı düzeltebilirsiniz:

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

Daha fazla bilgi için lütfen buraya bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.