当前位置: 首页 > 知识库问答 >
问题:

代码编译过程中遇到警告消息“使用或覆盖不推荐使用的API”

蓬兴国
2023-03-14

我编译了我的程序,得到了下面的错误。我该如何解决?

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

共有2个答案

澹台星剑
2023-03-14

第1步:找出代码使用的是哪个弃用的API。如果您使用现代IDE(eclipse或类似工具),弃用的代码将被清楚地标记,通常使用删除线字体。如果您从命令提示符编译,请在编译时将-Xlint: Deprecation添加到命令行。

步骤2.阅读已弃用API的留档,了解如何替换它。

袁志专
2023-03-14

您应该做的是按照警告消息所说的去做。使用-Xlint: Deprecation选项重新编译该类。然后编译器将告诉您正在使用或覆盖哪些已弃用的API。

如何做到这一点?

>

  • 如果您使用javac从命令shell编译,只需在命令行中添加-Xlint:deprecation

    对于maven构建,按如下方式运行Maven:

    mvn clean install -Dmaven.compiler.showDeprecation=true
    

    对于 Gradle 构建版本,请将以下内容添加到根构建文件中:

    allprojects { 
        tasks.withType(JavaCompile) { 
            options.deprecation = true
        }
    }
    

    或在特定编译任务上设置选项。

    对于Ant构建,在javac任务中将Deprecation属性设置为true

    对于IDE:

    • Eclipse:看到Eclipse没有显示已弃用的警告吗?
    • NetBeans:查看在哪里可以找到NetBeans中的Xlint选项?
    • Intellij:查看Intellij Idea查找项目中所有已弃用的用法

    一旦确定了导致问题的API,有三种方法可以“解决”错误。

    > < li>

    您可以阅读不推荐使用的API的javadocs以了解它不推荐使用的原因。然后,根据javadocs所说的内容和上下文,您需要找到一种方法,用更好的东西替换代码中使用的不推荐使用的元素。

    您可以使用@SuppressWarnings(“弃用”)注释来告诉编译器对此“保持沉默”。

    这通常是一个坏主意:

    >

  • 弃用的API可能会在未来的版本中删除,这将阻止您的代码在升级时运行。(建议您查看有关删除弃用API的产品政策。)

    不推荐使用的API可能存在一些基本缺陷,在某些情况下会使应用程序不可靠。

    对这些警告的不明智压制只是创建了一个技术部门,你或你的继任者将来必须解决这个问题。

    如果弃用警告是由于JavaSE本身或您正在使用的第三方API中的更改,您可以通过回滚到不显示警告的版本来“解决”它。这比上一个想法更糟糕。回滚,你只是让技术部门积累。

    (对于这个特定的示例,我猜测OP使用了< code>Thread类中的一个不推荐使用的方法:

    • countStackFrames()
    • 销毁()
    • 暂停()
    • 简历()
    • 停止()
    • 停止(可抛出)
    • 挂起()

    这些方法要么不可靠,要么不安全,要么两者兼而有之,强烈建议您不要使用它们。阅读以下解释:“为什么Thread.stop、Thread.suspend和Thread.resume弃用?”。)

  •  类似资料:
    • 我试图将我的项目升级到一些最新版本,但由于项目中的一些依赖项尚未更新,我无法获得空安全性。 我已经求助于sdk版本2.10,同时我更新了所有核心包,解决了所有突破性的更改。一些不推荐的更改(如FlatButton到TextButton,尚未解决)。 我在构建解决方案时遇到了几个问题,在咨询了一些旧的Stack帖子后,我拼凑了gradle文件更新,升级到Android Studio等... 但是,当

    • 我在最新的Android Studio上创建了一个全新的Android项目。我做的第一件事是将`realm'库添加到项目中,方法是将以下内容添加到gradle文件中: 如果我尝试编译,我会得到以下错误: Origine2:C:\users\usmaan.gradle\caches\caches\modules-2\files-2.1\io.realm\realm-android\0.80.3\79

    • 我一直在尝试在Android/IOS颤振应用程序中使用auth、firestore firebase,在测试了几个不同版本后,遇到了许多不同的问题。现在,它向我显示了构建日志中的几条消息。 构建日志 注意:D:\flatter\SDK\flatter。发布缓存\托管\发布。达特朗。org\firebase\u core-0.4。3.1\android\src\main\java\io\flatte

    • 我的目标:修复此错误,并能够运行我的应用程序而不会出现错误。 错误消息:注意:D:\学习\应用程序\src\主要\java\com\示例\学习\主要活动.java使用或覆盖已弃用的 API。注意:使用 -Xlint:弃用重新编译以了解详细信息。 我在“构建输出”中得到以下错误。我试图解决这个问题,但每次尝试都不成功。我在Stackoverflow上发现了一些与这个错误相关的问题,但是并不符合我的需

    • 我试图禁用MAMP中已弃用的警告。我的MAMP php版本是5.5.18。php.ini文件 /Applications/MAMP/bin/php/php5.5.18/conf/如我在phpinfo()中看到的。我的问题是无论我在php.ini.做什么都不会改变 我试过了 甚至: 另一方面 但是警告仍然显示在我的页面上。 我错过了什么? 谢啦

    • 问题内容: 自从我更新到。我在和中有很多已弃用的错误(消息现在很清楚)。 知道如何暂时禁用它们吗? 问题答案: 我有相同的问题,并通过以下链接进行了解决。Symfony声明要报告所有错误,并按设计覆盖您在php.ini中放置的内容(否则它将无法为您捕获并显示漂亮的堆栈跟踪)。 因此,您需要 通过在AppKernel.php中创建一个函数并设置error_reporting您想要的方式来 覆盖Sym