在使用SBT编译时,如何抑制有关不安全API的警告

在使用SBT编译时,如何抑制有关不安全API的警告,sbt,unsafe,Sbt,Unsafe,我有一个项目,包括Java和Scala源代码。Java源代码包括一个使用sun.misc.UnsafeAPI的文件。我们非常清楚使用此API的风险,希望抑制此文件中的警告。但是,我们还希望在Java和Scala代码的其余部分中将警告视为错误 我的build.sbt包括以下几行: lazy val root=(文件中的项目(“.”)。 背景( // ... 编译/javacopions++=Seq( “-Xlint:all”, “-沃罗”, “-XDenableSunApiLintControl”

我有一个项目,包括Java和Scala源代码。Java源代码包括一个使用
sun.misc.Unsafe
API的文件。我们非常清楚使用此API的风险,希望抑制此文件中的警告。但是,我们还希望在Java和Scala代码的其余部分中将警告视为错误

我的
build.sbt
包括以下几行:

lazy val root=(文件中的项目(“.”)。
背景(
// ...
编译/javacopions++=Seq(
“-Xlint:all”,
“-沃罗”,
“-XDenableSunApiLintControl”
),
Compile/fork:=true,
Compile/javaOptions+=“-xEnableSunapilintcontrol”,
// ...
)
我知道我必须创建一个新的JVM才能使
-xEnableSunapiLintControl
生效。因此,我指定了
Compile/fork:=true
,并在
Compile/javaOptions
中重新指定了该选项

不幸的是,我仍然认为报告的警告是错误的

我的Java文件是这样开始的:

package is.hail.annotations;
导入sun.misc.Unsafe;
导入java.lang.reflect.Field;
@SuppressWarnings(“sunapi”)
公共最终类内存{
在将Gradle与一起使用时,将成功抑制警告

compileJava {
    options.compilerArgs << "-Xlint:all" << "-Werror" << "-XDenableSunApiLintControl"
}
tasks.withType(JavaCompile) {
    options.fork = true // necessary to make -XDenableSunApiLintControl work
}
compileJava{

options.compilerArgs fwiw,我这里没有这个问题,即使
Compile/fork
为false: