Java “警告信息”;使用或覆盖不推荐使用的API“;在代码编译期间遇到
我编译了我的程序,我得到了以下错误。我应该如何解决它Java “警告信息”;使用或覆盖不推荐使用的API“;在代码编译期间遇到,java,multithreading,Java,Multithreading,我编译了我的程序,我得到了以下错误。我应该如何解决它 Note: ClientThreadClients.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. 你应该做的是按照警告信息所说的去做。使用-Xlint:deprecation选项重新编译该类。然后,编译器将告诉您正在使用或覆盖哪些已弃用的API 怎么做 如果使用javac从命令shell编译,只需将
Note: ClientThreadClients.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
你应该做的是按照警告信息所说的去做。使用
-Xlint:deprecation
选项重新编译该类。然后,编译器将告诉您正在使用或覆盖哪些已弃用的API
怎么做
- 如果使用
从命令shell编译,只需将javac
选项添加到命令行-Xlint:deprecation
- 对于Maven构建,按如下方式运行Maven:
mvn clean install -Dmaven.compiler.showDeprecation=true
- 对于Gradle生成,将以下内容添加到根生成文件:
或者在特定的编译任务上设置该选项allprojects { tasks.withType(JavaCompile) { options.deprecation = true } }
- 对于Ant构建,在
任务中将javac
属性设置为deprecation
true
- 对于IDE:
- 日食:见
- NetBeans:请参阅
- Intellij:看到了吗
一旦确定了导致问题的API,有两种方法可以“解决”错误
@SuppressWarnings(“弃用”)
注释告诉编译器对此保持“安静”
这通常是个坏主意:
- 不推荐使用的API可能会在将来的版本中删除,这将阻止您的代码在升级时运行。(建议您查看有关删除不推荐的API的产品政策。)
- 不推荐使用的API可能有一些基本缺陷,在某些情况下会使应用程序不可靠
(对于这个特定的示例,我的猜测是OP使用了类中不推荐的方法之一:
countStackFrames()
destroy()
pause()
resume()
stop()
停止(可丢弃)
suspend()
有人在评论中指出,他们收到了弃用警告,因为他们在类路径上有两个不同版本的库。他们“修复了它”“除掉其中一个。事实上,在这种情况下,真正的原因可能是库的较新版本已经弃用了一些API类或方法,它们的应用程序是根据这些API类或方法编译的。他们的“修复”实际上是回滚到旧版本的API
可以说,这是一件坏事。他们的应用程序现在依赖于旧版本的API,至少在他们能够找出问题的真正原因之前是如此。问题是,他们正在积累技术债务,最终需要以某种方式解决。步骤1:找出代码使用的是哪种不推荐的API。如果使用现代IDE(eclipse或类似工具),不推荐使用的代码将被清楚地标记,通常使用删除线字体。如果从命令提示符下编译,请在编译时将
-Xlint:deprecation
添加到命令行
第二步。阅读不推荐使用的API的文档,了解如何替换它