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

禁止javac警告"...是内部专有的API,可能会在未来的版本中删除"

郤坚诚
2023-03-14

当我使用JDK 1.7.0在OS X上编译Spring JDBC源代码时,我收到了以下警告:

warning: CachedRowSetImpl is internal proprietary API and may be removed in a future release

如何在编译期间抑制警告消息?

我已经知道并使用Java的@SuppressWarning注释。我正在寻找它的具体用途来抑制我所描述的警告。

我的问题是,在这一行代码中:

@SuppressWarnings("valuegoeshere")

“ValueGoesher”应该用什么来代替?

编辑:各位,我知道最好避免导致警告的代码。通常这是我的方法。然而,我在这里编译第三方代码,我不想重写。我只想添加正确的注释来抑制警告,这样我实际上可以做些什么的警告就不会被埋没。

共有3个答案

长孙雅志
2023-03-14

看到这个答案了吗

无法阻止ant生成编译器Sun专有API警告

测试代码

@SuppressWarnings("sunapi")
sun.security.x509.X509CertImpl test;

编译命令行

javac test.java -Werror -Xlint:sunapi -XDenableSunApiLintControl

javac test.java -Werror -Xlint:all -XDenableSunApiLintControl

编译在没有任何警告的情况下通过

删除SuppressWarnings标记并重新编译:

然后报告一个错误

test.java:4: warning: X509CertImpl is internal proprietary API and may be removed in a future release
        sun.security.x509.X509CertImpl test;
                     ^
error: warnings found and -Werror specified
1 error
1 warning
海雪松
2023-03-14

如果您使用的是maven,那么您可能有兴趣将以下内容添加到pom中。xml文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArgument>-XDignore.symbol.file</compilerArgument>
    </configuration>
</plugin>
凌恩
2023-03-14

这种特殊的警告是无法抑制的。至少不是正式的。

关于专有API的警告意味着您不应该使用导致警告的API。Sun不支持此类API,并且警告将不可抑制。

如果您特别确定,可以使用高度非文档化的javac-XDignore。象征file标志,它将根据Sun的内部rt.jar而不是面向公众的符号文件ct编译程序。symrt.jar不会产生此警告。

 类似资料: