Как подавить предупреждения о небезопасном API при компиляции с SBT - PullRequest
1 голос
/ 07 июня 2019

У меня есть проект, включающий исходные коды 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?

...