Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导入NotNull或Nullable和Android Studio将无法编译_Java_Gradle_Android Studio - Fatal编程技术网

Java 导入NotNull或Nullable和Android Studio将无法编译

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

当我向参数添加@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 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.我希望这能奏效。但和其他事情一样,我似乎无法摆脱这个错误。