как скрыть предупреждения об устаревании java 11 Nashorn

#java #gradle #javac #java-11 #nashorn

#java #gradle #javac #java-11 #nashorn

Вопрос:

Недавно я обновился до Java11. Есть 150 новых предупреждений об устаревании Nashorn:

 Utils.java:31: warning: [removal] NashornScriptEngineFactory in jdk.nashorn.api.scripting has been deprecated and marked for removal
            NashornScriptEngineFactory  factory = new NashornScriptEngineFactory();
  

Возможно ли скрыть эти предупреждения об устаревании?

Что я пробовал:

 tasks.withType(JavaCompile) {
    options.compilerArgs  = '-Xlint:-deprecation'
}

./gradlew build -Dnashorn.option.no.deprecation.warning=true

gradle-wrapper.properties: org.gradle.jvmargs= -Dnashorn.args=--no-deprecation-warning
  

а также

 NashornScriptEngineFactory  factory = new NashornScriptEngineFactory();
ENGINE = factory.getScriptEngine(new String[] {"--no-java --no-deprecation-warning"}, null, className -> false);
  

Я полагаю, что JDK-8210140 может ссылаться на аналогичную проблему.

Ответ №1:

Предупреждение, которое вы видите, выдается компилятором, --no-deprecation-warning единственное подавляет предупреждение времени выполнения "Warning: Nashorn engine is planned to be removed from a future JDK release" , которое выдается при создании экземпляра скриптового движка.

Вы должны уметь использовать:

 @SuppressWarnings("removal")
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
  

В исходном коде, чтобы полностью подавить предупреждение.

Или иным образом использовать:

 -Xlint:-removal
  

В качестве аргумента компилятора. Это приведет к подавлению предупреждений, но вы все равно получите примечание для каждого файла.