У меня есть проект, включающий исходные коды Java и Scala.Источники Java включают в себя один файл, который использует sun.misc.Unsafe
API.Мы хорошо осведомлены о рисках использования этого API и хотим скрыть предупреждения в этом файле.Однако мы также хотим рассматривать предупреждения как ошибки в остальной части кода Java и Scala.
My build.sbt
включает в себя следующие строки:
lazy val root = (project in file(".")).
settings(
// ...
Compile / javacOptions ++= Seq(
"-Xlint:all",
"-Werror",
"-XDenableSunApiLintControl"
),
Compile / fork := true,
Compile / javaOptions += "-XDenableSunApiLintControl",
// ...
)
Я понимаю отТАК прокомментируйте связанный пост , что я должен разветвить новую JVM, чтобы -XDenableSunApiLintControl
вступил в силу.По этой причине я указал Compile / fork := true
и повторно указал параметр в Compile / javaOptions
.
К сожалению, я все еще вижу предупреждение, сообщенное как ошибка.
Мой Java-файл начинается следующим образом:
package is.hail.annotations;
import sun.misc.Unsafe;
import java.lang.reflect.Field;
@SuppressWarnings("sunapi")
public final class Memory {
Что успешно подавляет предупреждения при использовании Gradle с
compileJava {
options.compilerArgs << "-Xlint:all" << "-Werror" << "-XDenableSunApiLintControl"
}
tasks.withType(JavaCompile) {
options.fork = true // necessary to make -XDenableSunApiLintControl work
}
Как включить подавление API sun.misc.Unsafe
в SBT?