导入NotNull或Nullable和Android Studio不会编译

当我将@NotNull或@Nullable注释添加到参数时,Android Studio会自动帮助我添加/lib/annotations.jar并导入

import org.jetbrains.annotations.NotNull import org.jetbrains.annotations.Nullable; 

但在此之后,该项目将不会编译。 如果我也删除注释但保留导入语句,项目仍然不会编译。 但是,如果我删除NotNull和Nullable的导入语句项目编译

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. 

从cmd运行gradlew compileDebug给出了一个小提示:

 :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 

所以我检查了我的环境variables,它们被设置为:

 JAVA_HOME=C:\Program Files (x86)\Java\jre7 JDK_HOME=C:\Program Files\Java\jdk1.7.0_21\ 

任何人有这个想法吗? (我是新来的Java和Android编程)

我想,正确的方法是使用MavenCentral仓库中的原始JetBrains库在您的build.gradle依赖项(本例中是最新版本):

 dependencies { compile 'com.intellij:annotations:+@jar' ... } 

你也可以使用android自己的@NonNull@Nullable

  • 将以下内容添加到build.gradle

     dependencies { ... // For @Nullable/@NonNull compile 'com.android.support:support-annotations:+' } 
  • 进入文件 / 设置项目设置检查,然后search“可空”。

    常量条件和例外以及@NotNull / @ Nullable问题中 ,单击configuration注释并selectAndroid的注释。

    您也可能希望在常量条件和例外情况下查看Suggest @Nullable annotations …或者可能调整其他选项。

目前,Android API或支持库中没有NonNull / Nullable注释。 你也不能使用IntelliJ,因为在使用Gradle构build时,它们不在编译类path中。

但是,您可以轻松创build自己的。 这很简单:

 @Documented @Retention(RetentionPolicy.CLASS) @Target({METHOD,PARAMETER,LOCAL_VARIABLE,FIELD}) public @interface NonNull { } 

一旦发生这种情况,您可以configurationIntelliJ(或Android Studio)来识别这个(和匹配的@Nullable )是用于空检查的默认注释。

为此,请进入IntelliJ首选项中的@NotNull/@Nullable problems下,然后在检查树中的Probable Bugs下find@NotNull/@Nullable problems条目。

select项目,在右下angular你将有一个button“configuration注释”。 这将允许您设置自己的注释,因为一个intelliJ将用于此检查。

对于使用Android的支持,如@Nullable,@NonNull等。在你的项目中必须导入android支持注释库。 只需将此行添加到 gradle文件中的依赖关系即可

dependencies { compile 'com.android.support:support-annotations:+' }

导入包到课堂。
对于使用@Nullable注释:

 import android.support.annotation.Nullable; 

对于@NonNull

 import android.support.annotation.NonNull; 

更多信息你可以在这里findAndroid开发人员

将以下内容添加到build.gradle文件的依赖项部分的最简单方法。

 dependencies { compile 'com.intellij:annotations:+@jar' ... ... } 

编辑:更新使用@ RichieHH的想法使用的Maven存储库,这绝对是这样做的方式。

现在你应该使用android.support.annotation包中的注释。 我只是不确定他们在文档中添加的时候,是不是典型的句子“在API级别X中添加”,我不喜欢阅读博客等。>]

 import android.support.annotation.NonNull; ... public void fooFighter(@NonNull Object honeyBunny){ ... } 

最好的方法是使用maven依赖

  1. 通过添加设置存储库path

     repositories { maven { url "https://repository.jboss.org/nexus/content/repositories/thirdparty-releases" } } 
  2. 添加依赖项

     dependencies { compile 'org.jetbrains:annotations:7.0.2' } 
  3. 利润!