Java 导入NotNull或Nullable和Android Studio将无法编译
当我向参数添加@NotNull或@Nullable注释时,Android Studio会自动帮助我添加/lib/annotations.jar和导入Java 导入NotNull或Nullable和Android Studio将无法编译,java,gradle,android-studio,Java,Gradle,Android Studio,当我向参数添加@NotNull或@Nullable注释时,Android Studio会自动帮助我添加/lib/annotations.jar和导入 import org.jetbrains.annotations.NotNull import org.jetbrains.annotations.Nullable; 但在此之后,项目将无法编译。如果我也删除了注释,但保留了导入语句,那么项目仍然无法编译。但是,如果我删除NotNull和Nullable的导入语句,项目编译就可以了 Android
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 compiledbug会给出一点提示:
: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编程都是新手目前,android API或支持库中没有非空/可空的注释。您也不能使用IntelliJ one,因为在使用Gradle构建时,它们不在编译类路径上 但是,您可以轻松创建自己的。很简单:
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({METHOD,PARAMETER,LOCAL_VARIABLE,FIELD})
public @interface NonNull {
}
一旦关闭,您可以将IntelliJ或Android Studio配置为识别此注释,并将匹配的@Nullable作为用于空检查的默认注释
要做到这一点,请进入IntelliJ首选项,在Inputs下,然后在inspection树中的Problem Bugs下找到@NotNull/@Nullable problems条目
选择该项,在右下角有一个用于配置注释的按钮。这将允许您将自己的注释设置为intelliJ将用于此检查的注释。最好的方法是使用maven依赖项
dependencies {
compile 'org.jetbrains:annotations:7.0.2'
}
通过添加
repositories {
maven {
url "https://repository.jboss.org/nexus/content/repositories/thirdparty-releases"
}
}
添加依赖项
dependencies {
compile 'org.jetbrains:annotations:7.0.2'
}
利润
我想,正确的方法是在您的build.gradle dependencies中使用MavenCentral repository中的原始JetBrains库本例中的最新可用版本:
dependencies {
implementation 'com.intellij:annotations:+@jar'
...
}
您还可以使用android自己的@NonNull&@Nullable: 将以下内容添加到build.gradle: 转到文件/设置→ 项目设置→ 检查并搜索可为空的 在常量条件&异常和@NotNull/@Nullable问题中,单击配置注释并选择Android的注释 您可能还希望在恒定条件和例外情况下,签出Suggest@Nullable annotations…或者可能调整其他选项
2015年,您将使用android.support.annotation包中的注释。我只是不确定他们是在什么时候添加的,因为在API级别X中没有添加典型的句子,我也不想阅读博客等。]
import android.support.annotation.NonNull;
...
public void fooFighter(@NonNull Object honeyBunny){
...
}
用于使用Android支持选项,如-@Nullable、@NonNull等。。在您的项目中必须导入android支持注释库。只需将这一行添加到gradle文件中的Dependencies 依赖关系{ 编译'com.android.support:supportannotations:+' } 并将包导入类。 要使用@Nullable批注,请执行以下操作:
import android.support.annotation.Nullable;
对于@NonNull
import android.support.annotation.NonNull;
你可以在这里找到更多信息我在gradle-5.1.1-AndroidStudio 3.4中遇到了这个问题,类似这样的错误-编译失败;有关详细信息,请参阅编译器错误输出。任务“:app:compiledBugJavaWithJavaC”的执行失败。在这种情况下,我使用
Maven的“org.jetbrains:annotations:16.0.2”实现添加依赖项:
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>16.0.1</version>
</dependency>
只需导入androidx.annotation.Nullable即可我对gradle不太熟悉,但您可能应该在build.gradle中添加对annotations.jar的依赖项。类似于依赖项{compilefiles'full/path/to/annotations.jar}谢谢,这解决了这个问题!我认为添加依赖项是android studio在我第一次编写@NotNull时自动做的,它希望我添加一些东西。你可以在这里@vmironov找到这种行为的解释,如果你将此添加为一个答案,我可以接受。upvote,因为此提示不需要任何额外的第三方库。你的答案解决了我的问题。只有一件事:在版本号中显示避免使用+警告。。。我已经这样设置了我的版本:编译'com.android.support:support annotations:23.1.1'本来应该在Mac android Studio->Preferences上,但是我找不到项目设置或检查。我在Android Studio 4上。在较新版本中使用实现而不是编译我使用实现“org.jetbrains:annotations:16.0.2”-对于gradle-5.1.1,它对我有效。这里是Complete newb->Android 4,即使在重新同步gradle和重建项目之后,这对我也不起作用。我仍然收到红色错误。2015年的今天已经过去,2019年的今天,使用androidx。注释:注释:1.x.x:psmooooth+1.我希望这能奏效。但和其他事情一样,我似乎无法摆脱这个错误。