Предупреждающее сообщение "использует или переопределяет устаревший API", обнаруженное во время компиляции кода

я скомпилировал свою программу, и я получил следующую ошибку. Как я должен это решить?

Note: ClientThreadClients.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

2 ответов


что вы должны сделать, это сделать то, что предупреждающие сообщения говорят. Перекомпилируйте этот класс с помощью .

компилятор сообщит вам, какой устаревший API вы используете или переопределяете.

(в качестве альтернативы, если вы показали нам исходный код этого класса, мы можем определить проблему для вас ... или составить его сами.)


но я Угадай что вы используете один из устаревших методов the Thread класс:

  • countStackFrames()
  • destroy()
  • pause()
  • resume()
  • stop()
  • stop(Throwable)
  • suspend()

эти методы либо ненадежны, либо небезопасны, либо оба. Настоятельно рекомендуется не использовать их. Прочтите это объяснение:"зачем нить.стоп, нить.suspend и Thread.продолжить Нерекомендуемый?".


после того как вы определили API, который вызывает проблему, есть два подхода к "решению" ошибки.

  1. вы можете прочитать javadocs для устаревшего API, чтобы узнать почему он устарел. Затем, основываясь на том, что говорят javadocs и контекст, вы разрабатываете способ заменить использование кода устаревшего элемента чем-то лучшим.

  2. вы можете используйте @SuppressWarnings("deprecation") аннотация, чтобы сообщить компилятору "быть тихим" об этом. Это вообще плохая идея:

    • устаревший API может быть удалены в будущем выпуске.
    • устаревший API мая имеют фундаментальные недостатки, которые делают ваше приложение ненадежным в некоторых обстоятельствах.

Шаг 1: Узнайте, какой устаревший API использует код. Если вы используете современную IDE (eclipse или аналогичный инструмент), устаревший код будет четко отмечен, как правило, зачеркнутым шрифтом. Если вы компилируете из командной строки add -Xlint:deprecation в командной строке при компиляции.

Шаг 2. Прочитайте документацию для устаревшего API, чтобы узнать, как его заменить.