Javax.annotation के अंदर @ योग्य नहीं मिल सकता है।


116

मैं @Nullable खत्म करने के लिए एनोटेशन का उपयोग करना चाहता हूं NullPointerExceptions। मुझे नेट पर कुछ ट्यूटोरियल मिले, मैंने देखा कि यह एनोटेशन पैकेज से आता है javax.annotation.Nullable; लेकिन जब मैं इसे आयात करता हूं तो एक संकलन त्रुटि उत्पन्न होती है: प्रतीक नहीं मिल सकता है

जवाबों:


146

आपको एक जार शामिल करने की आवश्यकता है जो इस वर्ग में मौजूद है। आप इसे यहां पा सकते हैं

मावेन का उपयोग करते हुए, आप निम्नलिखित निर्भरता घोषणा जोड़ सकते हैं:

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

और ग्रेड के लिए:

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

74
Google (विशेष रूप से इसकी खोज करने वाली कलाकृतियाँ) javaxपैकेज के प्रकार क्यों प्रदान करता है? क्या javaxइस प्रकार प्रदान करने वाले एक- समूह उप-समूह के साथ कोई कलाकृति नहीं है?
एंड्रयू स्वान

9
@AndrewSwan ऐसा लगता है कि लेखक ने GroupId को चुना com.google.code.findbugsक्योंकि यह Google के कोड होस्टिंग समाधान पर होस्ट किया जा रहा था
मैट बी

2
Google-फाइबग्स jsr305 का संदर्भ कार्यान्वयन है, इस प्रकार वे javax-packageName I अनुमान का उपयोग करने की अनुमति देते हैं।
.सिरसेसर

33

से कलाकृतियों को स्थानांतरित कर दिया गया net.sourceforge.findbugsहै

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

26

यदि आप ग्रेडल का उपयोग कर रहे हैं, तो आप इस तरह निर्भरता को शामिल कर सकते हैं:

repositories {
    mavenCentral()
}

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

1
मैंने कोशिश की, और त्रुटि मिली: तर्कों के लिए विधि संकलन () {{group = com.google.code.findbugs, name = jsr305, संस्करण = 3.0.0}] org.gradle.api.internal.artifacts पर नहीं मिला। dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2।
कमल

उपरोक्त उदाहरण के साथ @kamal, यह आमतौर पर माना जाता है कि आपने 'java'(या अन्य) प्लगइन को लागू किया है जो पहले ही compileकॉन्फ़िगरेशन बना चुका है
mkobit

Javax.annotation.nullable आयात करने में असमर्थ; मेरे क्लासपाथ में jsr250-api-1.0.jar है। मैंने मावेन पोम को अपडेट करने की भी कोशिश की थी <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> ग्रहण ने त्रुटियां दीं: गुम कलाकृतियोंcom.google.code.findbugs:jsr305:jar:3.0.0 Failure to transfer com.google.code.findbugs:jsr305:jar:3.0.0
सैम-टी

यह अंत में jsr305-3.0.1.jar - कुछ ग्रहण cp समस्या पर काम किया। हां आखिरकार यह ग्रहण में बाहरी जार आयात के बाद संकलित होता है
सैम-टी

क्योंकि रन-वे पर जार की आवश्यकता नहीं है, compileOnly group...बस के बजाय का उपयोग करेंcompile group...
रेनाटो

7

अगर किसी के पास एंड्रॉइड प्रोजेक्ट संकलित करने की कोशिश करते समय ऐसा होता है, तो वैकल्पिक वैकल्पिक कार्यान्वयन होता है android.support.annotation.Nullable। इसलिए ध्यान रखें कि आपने अपने imports में कौन सा पैकेज संदर्भित किया है ।


4

अगर किसी के पास यह मुद्दा है कि इंटेलीजे आईडीईए में बनाए गए मावेन प्रोजेक्ट को बाहरी रूप से बनाते समय, मैंने उत्तर के बजाय निम्नलिखित निर्भरता का उपयोग किया:

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

इसका उपयोग करने से यह प्रोजेक्ट IntelliJ IDEA पर और खुद मावेन के उपयोग से निर्माण कर सकेगा।

आप इसे यहाँ पा सकते हैं ।


2
खबरदार जो org.jetbrains:annotations:15.0प्रदान @org.jetbrains.annotations.Nullableनहीं करता है @javax.annotation.Generated। यदि आप कुछ कोड जनरेटर का उपयोग करते हैं तो यह एक समस्या हो सकती है openapi-generator-maven-plugin
दानीदिमेई

3

आप अपने gradle.build के अंदर निम्नलिखित पंक्ति जोड़कर इसका नवीनतम संस्करण जोड़ सकते हैं।

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

2

मैं अमरूद का उपयोग कर रहा हूं जिसमें एनोटेशन शामिल है:

(ग्रेड कोड)

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

1

एंड्रॉइड प्रोजेक्ट्स के मामले में, आप प्रोजेक्ट / मॉड्यूल ग्रेडल फ़ाइल (बिल्ड.ग्रेड) को बदलकर इस त्रुटि को ठीक कर सकते हैं:

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

अधिक जानकारी के लिए, कृपया यहाँ देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.