Không thể tìm thấy @Nullable bên trong javax.annotation. *


116

Tôi muốn sử dụng @Nullable chú thích để loại bỏ NullPointerExceptions. Tôi tìm thấy một số hướng dẫn trên mạng, tôi nhận thấy rằng chú thích này đến từ gói javax.annotation.Nullable; nhưng khi tôi nhập nó, một lỗi biên dịch được tạo ra: không thể tìm thấy biểu tượng

Câu trả lời:


146

Bạn cần bao gồm một jar mà lớp này tồn tại. Bạn có thể tìm thấy nó ở đây

Nếu sử dụng Maven, bạn có thể thêm khai báo phụ thuộc sau:

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

và cho Gradle:

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

74
Tại sao Google (đặc biệt là phần mềm findbugs của nó) cung cấp các loại thuộc về javaxgói? Không có tạo tác nào với một javaxgroupId có tiền tố cung cấp loại này?
Andrew Swan

9
@AndrewSwan có vẻ như tác giả đã chọn groupId com.google.code.findbugsvì nó đang được lưu trữ trên giải pháp lưu trữ mã của Google
matt b

2
Google-findbugs là triển khai tham chiếu của jsr305, do đó, chúng được phép sử dụng javax-packageName mà tôi đoán.
icyerasor

33

Hiện vật đã được chuyển từ net.sourceforge.findbugssang

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

26

Nếu bạn đang sử dụng Gradle, bạn có thể bao gồm phần phụ thuộc như sau:

repositories {
    mavenCentral()
}

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

1
Tôi đã thử và gặp lỗi: Không thể tìm thấy phương thức compile () cho các đối số [{group = com.google.code.findbugs, name = jsr305, version = 3.0.0}] trên org.gradle.api.internal.artifacts. dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2.
kamal

@kamal với ví dụ trên, thường giả sử bạn đã áp dụng 'java'(hoặc khác) plugin đã tạo compilecấu hình .
mkobit

Không thể nhập javax.annotation.Nullable; Tôi có jsr250-api-1.0.jar trong classpath của mình. Tôi thậm chí đã cố gắng cập nhật maven pom <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipse đã lỗi: Thiếu vậtcom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
Sam-T

Cuối cùng nó đã hoạt động jsr305-3.0.1.jar - một số vấn đề về cp nhật thực. Có cuối cùng nó biên dịch sau nhập khẩu jar bên ngoài vào nhật thực
Sam-T

Bởi vì jar là không cần thiết khi chạy, sử dụng compileOnly group...thay vì chỉcompile group...
Renato

7

Trong trường hợp ai đó có điều này trong khi cố gắng biên dịch một dự án Android, có một triển khai Nullable thay thế trong android.support.annotation.Nullable. Vì vậy, hãy quan tâm đến gói bạn đã tham chiếu trong imports của bạn .


4

Nếu có ai gặp sự cố này khi xây dựng dự án Maven được tạo trong IntelliJ IDEA bên ngoài, tôi đã sử dụng phụ thuộc sau thay cho câu trả lời:

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

Sử dụng điều này sẽ cho phép dự án xây dựng trên IntelliJ IDEA và tự nó sử dụng Maven.

Bạn có thể tìm thấy nó ở đây .


2
hãy cẩn thận mà org.jetbrains:annotations:15.0cung cấp @org.jetbrains.annotations.Nullablekhông @javax.annotation.Generated. Đây có thể là một vấn đề trong trường hợp bạn sử dụng một số trình tạo mã như openapi-generator-maven-plugin.
danidemi

3

bạn có thể thêm phiên bản mới nhất của cái này bằng cách thêm dòng sau vào bên trong gradle.build của bạn.

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

2

Tôi đang sử dụng Guava có chú thích bao gồm:

(Mã Gradle)

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

1

Trong trường hợp các dự án Android, bạn có thể sửa lỗi này bằng cách thay đổi tệp gradle dự án / mô-đun (build.gradle) như sau:

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

Để biết thêm thông tin chi tiết, vui lòng tham khảo tại đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.