ไม่พบ @Nullable ใน javax.annotation *


116

ฉันต้องการใช้บันทึกย่อที่จะกำจัด@Nullable NullPointerExceptionsผมพบว่าบทเรียนบางอย่างในสุทธิผมสังเกตเห็นว่าคำอธิบายประกอบนี้มาจากแพคเกจjavax.annotation.Nullable; แต่เมื่อฉันนำเข้ามันเกิดข้อผิดพลาดในการคอมไพล์: ไม่พบสัญลักษณ์

คำตอบ:


146

คุณต้องใส่โถที่มีคลาสนี้อยู่คุณสามารถหาได้ที่นี่

หากใช้ Maven คุณสามารถเพิ่มการประกาศการอ้างอิงต่อไปนี้:

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

และสำหรับ Gradle:

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

74
เหตุใด Google (โดยเฉพาะสิ่งประดิษฐ์ findbugs) จึงจัดหาประเภทที่เป็นของjavaxแพ็คเกจ ไม่มีjavaxอาร์ติแฟกต์ที่มี -prefixed groupId ที่ระบุประเภทนี้หรือไม่?
Andrew Swan

9
@AndrewSwan ดูเหมือนว่าผู้เขียนจะเลือก groupId com.google.code.findbugsเนื่องจากถูกโฮสต์บนโซลูชันโฮสติ้งโค้ดของ Google
matt b

2
Google-findbugs เป็นการใช้งานอ้างอิงของ jsr305 ดังนั้นจึงได้รับอนุญาตให้ใช้ javax-packageName ฉันเดา
icyerasor

33

อาร์ติแฟกต์ถูกย้ายจากnet.sourceforge.findbugsไปยัง

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

26

หากคุณใช้ Gradle คุณสามารถรวมการพึ่งพาได้ดังนี้:

repositories {
    mavenCentral()
}

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

1
ฉันลองแล้วและได้รับข้อผิดพลาด: ไม่พบ method compile () สำหรับอาร์กิวเมนต์ [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] บน org.gradle.api.internal.artifacts dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2
kamal

@kamal ด้วยตัวอย่างข้างต้นโดยทั่วไปสมมติว่าคุณใช้'java'ปลั๊กอิน (หรืออื่น ๆ ) ที่สร้างการcompileกำหนดค่าไว้แล้ว
mkobit

ไม่สามารถนำเข้า javax.annotation.Nullable; ฉันมี jsr250-api-1.0.jar ใน classpath ของฉัน ฉันลองอัปเดต maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse แล้วยังให้ข้อผิดพลาด: ไม่มีสิ่งประดิษฐ์com.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T

ในที่สุดก็ทำงาน jsr305-3.0.1.jar - ปัญหา eclipse cp บางอย่าง ใช่ในที่สุดก็รวบรวมหลังจากนำเข้าโถภายนอกเข้าสู่คราส
Sam-T

เนื่องจากไม่จำเป็นต้องใช้ jar ในรันไทม์ให้ใช้compileOnly group...แทน justcompile group...
Renato

7

ในกรณีที่มีคนนี้ในขณะที่พยายามรวบรวมโครงการ Android มีการดำเนินการ Nullable android.support.annotation.Nullableทางเลือกใน ดังนั้นดูแลแพ็คเกจที่คุณอ้างถึงในimports ของคุณ


4

หากใครมีปัญหานี้เมื่อสร้างโครงการ Maven ที่สร้างใน IntelliJ IDEA ภายนอกฉันใช้การอ้างอิงต่อไปนี้แทนคำตอบ:

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

การใช้สิ่งนี้จะช่วยให้โครงการสามารถสร้าง IntelliJ IDEA และด้วยตัวเองโดยใช้ Maven

คุณสามารถค้นหาได้ที่นี่


2
ระวังว่าorg.jetbrains:annotations:15.0ให้ไม่ได้@org.jetbrains.annotations.Nullable ซึ่งอาจจะมีปัญหาในกรณีที่คุณใช้เครื่องกำเนิดไฟฟ้ารหัสบางประการที่เป็น@javax.annotation.Generated openapi-generator-maven-plugin
danidemi

3

คุณสามารถเพิ่มเวอร์ชันล่าสุดได้โดยเพิ่มบรรทัดต่อไปนี้ใน gradle.build ของคุณ

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


1

ในกรณีของโปรเจ็กต์ Android คุณสามารถแก้ไขข้อผิดพลาดนี้ได้โดยเปลี่ยนไฟล์ gradle project / module (build.gradle) ดังนี้:

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

สำหรับข้อมูลเพิ่มเติมโปรดดูที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.