javax.annotation。*内に@Nullableが見つかりません


115

@Nullable アノテーションを使って排除したいNullPointerExceptions。ネット上でいくつかのチュートリアルを見つけましたが、この注釈がパッケージからのものであることに気付きましたjavax.annotation.Nullable。しかし、インポートするとコンパイルエラーが発生します:シンボルが見つかりません

回答:


144

このクラスが存在するjarを含める必要があります。ここで見つけることができます

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を持つアーティファクトはありませんか?
アンドリュース

9
@AndrewSwan com.google.code.findbugsGoogleのコードホスティングソリューションでホストされていたため、作成者がgroupIdを選択したようです
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
私が試しましたが、エラーが発生しました:org.gradle.api.internal.artifactsで引数[{group = com.google.code.findbugs、name = jsr305、version = 3.0.0}]のメソッドcompile()が見つかりませんでした。 dsl.dependencies.DefaultDependencyHandler_Decorated@7b35fdf2。
kamal

上記の例の@kamalでは、通常、'java'すでにcompile構成を作成している(または他の)プラグインを適用していると想定しています
mkobit 2016年

javax.annotation.Nullableをインポートできません。クラスパスにjsr250-api-1.0.jarがあります。<dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency> Eclipseでmaven pomを更新しようとしてもエラーが発生しました:アーティファクトがありません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の問題。はい、Eclipseへの外部jarインポート後にコンパイルされます
Sam-T

jarは実行時に必要ないため、compileOnly group...代わりに使用してくださいcompile group...
Renato

7

Androidプロジェクトをコンパイルしようとしているときに誰かがこれを持っている場合、に代替のNullable実装がありandroid.support.annotation.Nullableます。したがって、importsで参照したパッケージに注意してください。


4

IntelliJ IDEAで外部で作成されたMavenプロジェクトをビルドするときに誰かがこの問題を抱えている場合は、答えの代わりに次の依存関係を使用しました。

<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'

2

私は注釈が含まれているグアバを使用しています:

(グラドルコード)

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

1

Androidプロジェクトの場合、次のようにプロジェクト/モジュールのGradleファイル(build.gradle)を変更することで、このエラーを修正できます。

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

詳しくはこちらをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.