Tidak dapat menemukan @Nullable di dalam javax.annotation. *

116

Saya ingin menggunakan @Nullable anotasi untuk menghilangkan NullPointerExceptions. Saya menemukan beberapa tutorial di internet, saya perhatikan bahwa penjelasan ini berasal dari paket javax.annotation.Nullable; tetapi ketika saya mengimpornya, kesalahan kompilasi dihasilkan: tidak dapat menemukan simbol

MrSmith42
sumber

Jawaban:

146

Anda harus menyertakan toples tempat kelas ini ada. Anda dapat menemukannya di sini

Jika menggunakan Maven, Anda dapat menambahkan deklarasi dependensi berikut:

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

dan untuk Gradle:

dependencies {
  testImplementation 'com.google.code.findbugs:jsr305:3.0.2'
}
david99world
sumber
74
Mengapa Google (terutama artefak findbugs) menyediakan tipe yang termasuk dalam javaxpaket? Apakah tidak ada artefak dengan javax-prefixed groupId yang menyediakan tipe ini?
Andrew Swan
9
@AndrewSwan tampaknya penulis memilih groupId com.google.code.findbugskarena dihosting pada solusi hosting kode Google
matt b
2
Google-findbugs adalah implementasi referensi dari jsr305, jadi saya rasa mereka diizinkan untuk menggunakan javax-packageName.
Icerasor atau
33

Artefak telah dipindahkan dari net.sourceforge.findbugske

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

Jika Anda menggunakan Gradle, Anda bisa menyertakan dependensi seperti ini:

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}
mkobit
sumber
1
Saya mencoba, dan mendapatkan kesalahan: Tidak dapat menemukan metode compile () untuk argumen [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] di org.gradle.api.internal.artifacts. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
kamal
@kamal dengan contoh di atas, umumnya mengasumsikan Anda telah menerapkan 'java'plugin (atau lainnya) yang telah membuat compilekonfigurasi .
mkobit
Tidak dapat mengimpor javax.annotation.Nullable; Saya memiliki jsr250-api-1.0.jar di classpath saya. Saya bahkan mencoba memperbarui maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse memberi kesalahan: Artefak hilangcom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T
Akhirnya berhasil jsr305-3.0.1.jar - beberapa masalah cp gerhana. Ya, akhirnya dikompilasi setelah impor guci eksternal ke gerhana
Sam-T
Karena toples tidak diperlukan saat runtime, gunakan compileOnly group...sebagai ganti hanyacompile group...
Renato
7

Jika seseorang mengalami ini saat mencoba mengompilasi proyek Android, ada implementasi Nullable alternatif di android.support.annotation.Nullable. Jadi berhati-hatilah paket mana yang telah Anda referensikan di imports Anda .

Janis Peisenieks
sumber
4

Jika ada yang memiliki masalah ini saat membangun proyek Maven yang dibuat di IntelliJ IDEA secara eksternal, saya menggunakan ketergantungan berikut alih-alih jawabannya:

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

Menggunakan ini akan memungkinkan proyek untuk membangun IntelliJ IDEA dan dengan sendirinya menggunakan Maven.

Anda bisa menemukannya di sini .

crawton
sumber
2
berhati-hatilah karena tidak org.jetbrains:annotations:15.0memberikan . Ini bisa menjadi masalah jika Anda menggunakan beberapa generator kode sebagai . @org.jetbrains.annotations.Nullable@javax.annotation.Generatedopenapi-generator-maven-plugin
danidemi
3

Anda dapat menambahkan versi terbaru ini dengan menambahkan baris berikut di dalam gradle.build Anda.

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

Saya menggunakan Guava yang memiliki penjelasan termasuk:

(Kode Gradle)

compile 'com.google.guava:guava:23.4-jre'
Suku John
sumber
1

Dalam kasus proyek Android, Anda dapat memperbaiki kesalahan ini dengan mengubah file gradle proyek / modul (build.gradle) sebagai berikut:

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

Untuk informasi lebih lanjut, silakan lihat di sini .

KPandian
sumber