Не удается остановить муравей при генерации предупреждений о собственном API компилятора Sun - PullRequest
10 голосов
/ 08 марта 2012

Я вызываю javac из моего скрипта муравья так:

<javac srcdir="src" 
   destdir="build/classes" source="1.6" 
   target="1.6" debug="true" encoding="Cp1252"
   nowarn="true"> 

Но он все равно выдает предупреждения компилятора в выводе:

[javac] Compiling 73 source files to C:\IKOfficeRoot\Java\ERP\Framework\build\classes

[javac] C:\IKOfficeRoot\Java\ERP\Framework\src\de\ikoffice\util\LoggerFactory.java:49: warning: sun.reflect.Reflection is Sun proprietary API and may be removed in a future release
[javac]         return Logger.getLogger(Reflection.getCallerClass(2));
[javac]                                 ^
[javac] Note: C:\IKOfficeRoot\Java\ERP\Framework\src\de\ikoffice\db\SingleShotResultSet.java uses or overrides a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 warning

Я тоже пробовал

<compilerarg line="-Xlint:-unchecked -Xlint:-deprecation"/>

и

<compilerarg value="-Xlint:none"/>

но это тоже не имеет никакого эффекта. Как убрать предупреждения?

Ответы [ 6 ]

13 голосов
/ 27 августа 2012

добавление опции -XDignore.symbol.file в командную строку javac сработало для меня.

5 голосов
/ 23 января 2016

Лучший способ сделать это - использовать подавление sunapi, то есть либо -Xlint:-sunapi для всей компиляции, либо @SuppressWarnings("sunapi") в требуемой области.

Обратите внимание, единственный способ использоватьЭто подавление, однако, заключается в том, чтобы сначала включить его с опцией компилятора -XDenableSunApiLintControl

enableSunApiLintControl

1 голос
/ 16 декабря 2014

используйте атрибут nowarn, см. Ниже

например,

<javac srcdir="src" 
   destdir="build/classes" source="1.6" 
   target="1.6" debug="true" encoding="Cp1252"
   nowarn="on">

по умолчанию атрибут nowarn отключен

1 голос
/ 09 марта 2012

Рекомендация: не игнорируйте предупреждения вашего компилятора.Предупреждения там по причине.Устаревшая кодовая база моей компании движется к модели «обрабатывать предупреждения как ошибки и отказывать в сборке», поскольку мы можем затратить усилия на исправление предупреждений, выдаваемых во время нашего цикла компиляции.

В вашем случае предупреждение:

warning: sun.reflect.Reflection is Sun proprietary API and may be removed in a future release

Всегда было предупреждение не импортировать из sun пакетов, насколько я себя помню, потому что они являются непубличным API.На официальном сайте Oracle Java есть даже FAQ .

Вы не опубликовали свой фактический код, поэтому трудно дать дополнительные рекомендации ... Что вы используете в sun.reflect.Reflection что вы не могли бы сделать через что-то в java.lang.reflect?

1 голос
/ 08 марта 2012

Вы не можете сделать это : ни из командной строки, поэтому вы также не можете сделать это из Ant.

Документация javac гласит:

-Xlint: none

Отключить все предупреждения, не предписанные спецификацией языка Java.

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

Что вы можете сделать:

  1. использовать @SuppressWarnings({"deprecation"}, {"unchecked"}) в необходимых местах
  2. использовать обходной путь для перенаправления предупреждающих сообщений на/dev/null
  3. попробуйте скомпилировать из командной строки с аргументами -Xlint:-unchecked -Xlint:-deprecation, возможно, это только проблема, связанная с Ant.
0 голосов
/ 15 октября 2014

Чтобы предотвратить предупреждения об устаревании, я попытался сделать это, используя JDK 6 и JDK 7.

С JDK 7, @Deprecated аннотация делает работу

С JDK 6 это не работает, и добавление параметра -Xlint:-deprecation не работает для меня. Единственное, как мне удалось удалить предупреждение, это использовать @deprecated Javadoc Tag :

  /**
   * @deprecated
   */
  @Override
  public void removeValue(String arg0) {
    // TODO Auto-generated method stub
  }
...