如何禁止有关Sun专有API的java编译器警告

时间:2009-07-16 10:17:24

标签: java eclipse api base64 sun

我正在使用sun.misc.BASE64Encoder包中的encode()方法。如何抑制它生成的编译器警告?

  

sun.misc.BASE64Encoder是Sun专有API,可以在

中删除

作为后续,我为什么不在Eclipse中看到这个警告?

9 个答案:

答案 0 :(得分:24)

有一种完全没有记录的方法来抑制太阳专有的API警告! 将-XDignore.symbol.file添加到javac命令行。

我在http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6476630找到了这一点(一直滚动到最后一条评论)。我们都需要对那些添加了最后评论的“xfournet”进行思考!

答案 1 :(得分:16)

您可以切换到不同的Base64实现,例如http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html,它是Apache commons包的一部分,您可能已经包含在类路径中,或者http://iharder.sourceforge.net/current/java/base64/,您可以将其添加到如果您不想在路径上使用另一个Jar,请执行并粘贴在源代码树中。

答案 2 :(得分:7)

答案 3 :(得分:3)

Eclipse确实有一个设置(应该)选择它,参见例如the Eclipse 3.1 release notes中的解释:

首选项→Java→编译器→错误/警告→已弃用和受限制的API→禁止/不鼓励参考

(以及允许特定项目覆盖此设置的项目属性页面)

答案 4 :(得分:2)

你无法关闭它们,Eclipse只是为你过滤它们(如果被告知这样做的话)。

Linux上的快速临时修复:

javac *.java 2>&1 | pcregrep -v -M ".*Sun proprietary API.*\n.*\n.*\^"

2>& 1 ...将STDERR放入STDOUT,因此管道“|”会工作

pcregrep可能存在或可能不存在于您的系统中 - 如果没有,请使用您的包实用程序(例如在Debian,Ubuntu等上:“sudo apt-get install pcregrep”)

表达式搜索“Sun专有API”警告和以下两行(包含行和“^”表示行中错误的位置)。

我留下了“XY警告”。最后排队,以免忘记 警告; o) 请注意,如果您还有其他警告,那么报告的数字当然不正确:o)

另请注意,标准“grep”也不起作用,因为它不能跨越多行。

答案 5 :(得分:2)

如果您了解使用专有API的固有问题并决定无论如何都要这样做,并且如果您使用的是maven,则可能有兴趣将以下内容添加到pom.xml文件中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <compilerArgument>-XDignore.symbol.file</compilerArgument>
    </configuration>
</plugin>

答案 6 :(得分:0)

将调用封装在类中,该类放在类路径的库jar中。然后警告仅显示重新编译该库的时间。

答案 7 :(得分:0)

如果您使用的是jdk 1.8,那么您可以使用以下

java.util.Base64

答案 8 :(得分:-3)

javac选项-Xlint:unchecked确实可以解决问题:它会停用警告,有关详细信息,请参阅the javac manual