@NotNullまたは@Nullableアノテーションをパラメーターに追加すると、Android Studioが/lib/annotations.jarの追加とインポートを自動的に支援します
import org.jetbrains.annotations.NotNull
import org.jetbrains.annotations.Nullable;
しかし、この後、プロジェクトはコンパイルされません。注釈も削除するが、インポートステートメントを保持すると、プロジェクトはコンパイルされません。 ただし NotNullおよびNullableのインポートステートメントを削除すると、プロジェクトはコンパイルされますfine!
Android Studioは一般的なエラーを出します:
Gradle:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':Bugtester:compileDebug'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
ランニング gradlew compileDebug
cmdからわずかなヒントが得られます。
:Bugtester:compileDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':Bugtester:compileDebug'.
> Cannot find System Java Compiler. Ensure that you have installed a JDK (not just a JRE) and configured your Java_HOME system variable to point to the according directory.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
だから私は自分の環境変数をチェックし、次のように設定されています:
Java_HOME=C:\Program Files (x86)\Java\jre7
JDK_HOME=C:\Program Files\Java\jdk1.7.0_21\
誰もこれについて何か考えがありますか? (私はJavaとAndroidプログラミング)の両方が初めてです。
私の推測では、正しい方法はbuild.gradleの依存関係(この例では最新バージョン)でMavenCentralリポジトリの元のJetBrainsライブラリを使用することです。
dependencies {
compile 'com.intellij:annotations:+@jar'
...
}
Android独自の@NonNull
および@Nullable
を使用することもできます。
次をbuild.gradleに追加します。
dependencies {
...
// For @Nullable/@NonNull
compile 'com.Android.support:support-annotations:+'
}
ファイル/設定→プロジェクト設定→検査に移動し、「nullable」を検索します。
一定の条件と例外および@ NotNull/@ Nullable問題で、アノテーションの設定をクリックし、Androidのアノテーションを選択します。
また、一定の条件と例外の下で@ Nullableアノテーションの提案…を確認するか、他のオプションを調整することもできます。
Android-@ Nullable、@ NonNullなどの注釈をサポートします。プロジェクトにインポートする必要がありますAndroidサポート注釈ライブラリ。ちょうどこの行をgradleファイルのdependensiesに追加します
dependencies { compile 'com.Android.support:support-annotations:+' }
そして、クラスにパッケージをインポートします。
@ Nullableアノテーションを使用する場合:
import Android.support.annotation.Nullable;
@NonNullの場合
import Android.support.annotation.NonNull;
詳細はこちら Android開発者
2015年には、Android.support.annotationパッケージの注釈を使用していました。 docs のようにそれらを追加したかどうかはわかりませんが、「APIレベルXに追加された」という典型的な文はなく、ブログなどを読む気はありません>>
import Android.support.annotation.NonNull;
...
public void fooFighter(@NonNull Object honeyBunny){
...
}
現時点では、Android APIまたはサポートライブラリにNonNull/Nullable注釈はありません。IntelliJを使用することはできません。Gradleでビルドする場合、コンパイルクラスパス上にないためです。
ただし、独自に簡単に作成できます。とても簡単です:
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({METHOD,PARAMETER,LOCAL_VARIABLE,FIELD})
public @interface NonNull {
}
これがダウンしたら、IntelliJ(またはAndroid Studio))を設定して、この1つ(および一致する@Nullable
)をNullチェックに使用されるデフォルトのアノテーションとして認識できます。
これを行うには、Inpections
の下のIntelliJ設定に移動し、検査ツリーの@NotNull/@Nullable problems
の下でProbable Bugs
エントリを見つけます。
アイテムを選択すると、右下に「注釈の設定」ボタンが表示されます。これにより、intelliJがこの検査に使用する独自の注釈を設定できます。
gradle-5.1.1-Android Studio 3.4とそのようなエラー-コンパイルに失敗しました;詳細については、コンパイラエラーの出力を参照してください。タスク ':app:compileDebugJavaWithJavac'の実行に失敗しました。など。この場合、私は
implementation 'org.jetbrains:annotations:16.0.2'
そして何よりもエラーは明確になります。
最良の方法は、Maven依存関係を使用することです
を追加して、リポジトリパスを設定します
repositories {
maven {
url "https://repository.jboss.org/nexus/content/repositories/thirdparty-releases"
}
}
依存関係を追加する
dependencies {
compile 'org.jetbrains:annotations:7.0.2'
}
利益!
Mavenの依存関係を追加するには:
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>16.0.1</version>
</dependency>