当我将@NotNull或@Nullable注释添加到参数时,Android Studio会自动帮助我添加/lib/annotations.jar并导入
import org.jetbrains.annotations.NotNull
import org.jetbrains.annotations.Nullable;
但在此之后,该项目将无法编译。如果我也删除注释但保留import语句,项目仍然无法编译。 但如果删除NotNull和Nullable的import语句,项目会编译 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.
从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
所以我检查了我的环境变量,它们被设置为:
JAVA_HOME=C:\Program Files (x86)\Java\jre7
JDK_HOME=C:\Program Files\Java\jdk1.7.0_21\
有人对此有任何想法吗? (我是java和android编程的新手)
答案 0 :(得分:57)
我想,正确的方法是在build.gradle依赖项中使用MavenCentral存储库中的原始JetBrains库(此示例中为最新可用版本):
dependencies {
compile 'com.intellij:annotations:+@jar'
...
}
答案 1 :(得分:39)
您也可以使用Android自己的@NonNull
& @Nullable
:
将以下内容添加到 build.gradle :
dependencies {
...
// For @Nullable/@NonNull
compile 'com.android.support:support-annotations:+'
}
转到文件 / 设置→项目设置→检查并搜索“可空”
恒定条件&例外和 @NotNull / @Nullable问题,点击配置注释并选择Android的注释。
您可能还想在常数条件&条件下查看建议@Nullable注释... 。例外,或者可能调整其他选项。
答案 2 :(得分:11)
对于使用Android支持的anotation,如@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 developers
答案 3 :(得分:5)
目前,Android API或支持库中没有NonNull / Nullable注释。您也不能使用IntelliJ,因为在使用Gradle构建时它们不在编译类路径中。
但是,您可以轻松创建自己的。这很简单:
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({METHOD,PARAMETER,LOCAL_VARIABLE,FIELD})
public @interface NonNull {
}
一旦关闭,您可以配置IntelliJ(或Android Studio)来识别这个(以及匹配的@Nullable
)作为用于空检查的默认注释。
要执行此操作,请转到Inpections
下的IntelliJ首选项,然后在检查树中的@NotNull/@Nullable problems
下找到Probable Bugs
条目。
选择项目,在右下角,您将有一个“配置注释”按钮。这将允许您设置自己的注释,因为智能将用于此检查。
答案 4 :(得分:5)
2015年,您将使用 android.support.annotation 包中的注释。我只是不确定他们何时添加它们,如docs中没有那个典型的句子"在API级别X"中添加而且我不想阅读博客等等。>]
import android.support.annotation.NonNull;
...
public void fooFighter(@NonNull Object honeyBunny){
...
}
答案 5 :(得分:3)
将以下内容添加到build.gradle文件的依赖项部分的最简单方法。
dependencies {
compile 'com.intellij:annotations:+@jar'
... ...
}
编辑:更新后使用@ RichieHH的想法来使用maven存储库,这绝对是这样做的方法。
答案 6 :(得分:2)
为此目的只需导入 androidx.annotation.Nullable
答案 7 :(得分:0)
最好的方法是使用maven依赖
通过添加
设置存储库路径repositories {
maven {
url "https://repository.jboss.org/nexus/content/repositories/thirdparty-releases"
}
}
添加依赖项
dependencies {
compile 'org.jetbrains:annotations:7.0.2'
}
PROFIT!
答案 8 :(得分:0)
我遇到了 gradle-5.1.1 - Android Studio 3.4 的问题,并且类似的错误-编译失败;有关详细信息,请参见编译器错误输出。任务':app:compileDebugJavaWithJavac'的执行失败。等。在这种情况下,我使用
implementation 'org.jetbrains:annotations:16.0.2'
尤其是错误将被清除。
答案 9 :(得分:0)
对于Maven,添加依赖项:
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>16.0.1</version>
</dependency>