我想用oracle jdk 1.8编译简单代码:
class Foo {
public static void test(@NotNull String a) {}
}
但idea
不理解此类代码,并建议添加:
import com.sun.istack.internal.NotNull;
在idea
内的编译后,
但是如果gradle
使用build.gradle
运行构建:
version '1.0-snaphshot_03.03.2017'
apply plugin: 'java'
targetCompatibility = '1.8'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}
artifacts {
archives sourcesJar
}
我收到了错误:
error: package com.sun.istack.internal does not exist
import com.sun.istack.internal.NotNull;
error: cannot find symbol
public static void test(@NotNull String a) {
^
symbol: class NotNull
location: class Foo
我认为NotNull
中添加了1.8
?
如何才能在NotNull
和idea
中使用gradle
?
答案 0 :(得分:5)
标准JDK中没有@NotNull
注释用于一般用途(com.sun.internal.istack.NotNull
绝对不适合您的使用,因为它是内部类。)
Java Bean验证框架(JSR-303)具有javax.validation.constraints.NotNull
,它由(例如)Hibernate验证器实现。那可能 你想要的东西。
答案 1 :(得分:2)
我认为您应该添加org.jetbrains.annotations.NotNull
,因为IntelliJ IDEA IDE会将其用于静态分析。
参见:
IntelliJ Documentation
This SO Question